Daily Kotlin - null 처리, 엘비스 연산자, 이중등호 삼중등호, Any, BitShift
-
자료형 뒤에 물음표를 넣으면 null 처리가 가능
-
?.
: 세이프 콜
package chap02.section3
fun main() {
var str1: String? = "Hello Kotlin"
str1 = null
println("str1: $str1 length: ${str1?.length}")
var len = if(str1 != null) str1.length else -1
println("str1: $str1 length: $len")
}
- 엘비스 연산자 : 변수의 null 여부를 검사하여 아니라면 왼쪽 식 실행, null이면 오른쪽
package chap02.section3
fun main() {
var str1: String? = "Hello Kotlin"
str1 = null
println("str1: $str1 length: ${str1?.length ?: -1}")
}
- 이중등호와 삼중등호
package chap02.section3
fun main() {
val a: Int = 128
val b = a
println (a === b) //기본형 Int, 값 동일 : true
val c: Int? = a
val d: Int? = a
val e: Int? = c
println(c == d) // 값의 내용 동일 : true
println(c === d) // 내응은 같으나 다른 객체이므로 : false
println(c === e) // 값도 같고 같은 객체 : true
}
- Any 타입
package chap02.section3
fun main() {
var a: Any = 1
a = 20L
println("a: $a type: ${a.javaClass}")
}
- BitShift
package chap02.section4
fun main() {
var x = 4
var y = 0b0000_1010
var z = 0x0F
println("x shl 2 -> ${x shl 2}")
println("x.inv() -> ${x.inv()}")
println("y shr 2 -> ${y/4}, ${y shr 2}")
println("x shl 4 -> ${x*16}, ${x shl 4}")
println("z shl 4 -> ${z*16}, ${z shl 4}")
x = 64
println("x shr 4 -> ${x/16}, ${x shr 4}")
}
x shl 2 -> 16
x.inv() -> -5
y shr 2 -> 2, 2
x shl 4 -> 64, 64
z shl 4 -> 240, 240
x shr 4 -> 4, 4
Comments