TIL

Lec 03. 코틀린에서 Type을 다루는 방법

1. 기본 타입

val number1 = 3 // Int
val number2 = 3L // Long

암시적 타입 변환과 명시적 타입 변환

int number1 = 4;
long number2 = number1;
System.out.println(number1 + number2);
val number1 = 4
val number2: Long = number1 // 컴파일 에러!!

val number1 4
val number2: Long = number1.toLong() // 가능

// nullable 타입에서 명시적 타입 변환
val number3: Int? = 1
val number4: Long = number3?.toLng() ?: 0L

2. 타입 캐스팅

public static void printAgeIfPerson(Object obj) {
  if (obj instanceof Person) {
    Person person = (Person) obj;
    System.out.println(person.getAge());
  }
}
fun printAgeIfPerson(obj: Any) {
  if (obj is Person) {
    val person = obj as Person // 타입 체크 없이 수행하면 예외가 발생
    println(person.age)
  }
}
fun printAgeIfPerson(obj: Any) {
  if (obj is Person) {
    println(obj.age)
  }
}
fun printAgeIfPerson(obj: Any?) {
  val person = obj as? Person
  println(person?.age)  
}

3. Kotlin의 3가지 특이한 타입

Any

Unit

Nothing

fun fail(message: String): Nothing {
 throw IllegalArgumentException(message)
}

4. String Interpolation, String indexing

val person = Person("이동규", 27)
val log = "이름은 ${person.name}이고 나이는 ${person.age}세 입니다."
val name = "이동규"
val log = "이름 : $name"
val withoutIndent = """
    ABC
    123
    456
""".trimIndent()
println(withoutIndent)
val str = "ABC"
println(str[0]) // A
println(str[1]) // B
println(str[2]) // C