Daily Kotlin - null 처리, 엘비스 연산자, 이중등호 삼중등호, Any, BitShift

1 minute read

  • 자료형 뒤에 물음표를 넣으면 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

Categories:

Updated:

Comments