→ 변수이름 지정 : Camel case
→ val : 변경 불가능한 변수 (immutable)
→ var : 변경 가능한 변수 (mutable)
→ Type 지정
val name: String = “”
→ Type 생략
val name = “”
const는, var에쓸수 없고, val에만 쓸수 있다
const val : 값이 컴파일 시에 결정되는 상수
val: 값이 런타임 시에 결정되는 상수. 불완전한 불변성
fun main() {
lateinit var text: String
val result1 = 30
text = "Result : $result1"
println(text)
val result2 = 50
text = "Result : ${result1 + result2}"
println(text)
}
fun main() {
lateinit var text: String
val textLength: Int by lazy {
text.length
}
text = "asdfsdf"
println(textLength)
}
val test = 0
val test2 = "0"
val result = test is Int
print(result)
// true
val result2 = test2 is Int
print(result)
// false
→ 명시적 형변환
→ 암시적 형변환
val l = 1L + 3 // Long + Int => Long
→ Unsafe cast operator (as)
val text : String = 123 as String
→ Safe cast operator (as?)
val text : String? = 123 as? String
var userName: String? = 'ivy'
userName = null
앞의 변수가 null 이 아닐때만 오른쪽 함수가 실행됨
앞의 변수가 null 일때는 null 을 반환
var text : String? = null
print(text?.uppercase())
// 결과 = null
var text : String? = "asdf"
print(text?.uppercase())
// 결과 = asdf
fun getName(str: String?) {
val name = str ?: "Unknown"
print(str)
}
var text = readLine()?: "default"
readLine() ?: “default” 하게되면
→ 입력받은값 있을때, 그대로 반환
→ 입력받은값 없을때 (null 일때) “default” 반환
fun ignoreNulls(s: String?) {
val sNotNull: String = s!!
println(sNotNull.length)
}
→ isEmpty() / isNullOrEmpty()
val s1 = ""
s1.isEmpty() // true
val s2 = " "
s2.isEmpty() // false
→ isBlank() / isNullOrBlank()
val s1 = ""
s1.isBlank() // true
val s2 = " "
s2.isBlank() // true