Byte, Short, Int, Long, Float, Doubleval number1 = 3 // Int
val number2 = 3L // Long
암시적명시적int 타입이 long 타입으로 암시적 변경이 가능하다.
int number1 = 4;
long number2 = number1;
System.out.println(number1 + number2);
to변환타입()을 사용하여 명시적 타입 변경을 해야 한다.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
public static void printAgeIfPerson(Object obj) {
if (obj instanceof Person) {
Person person = (Person) obj;
System.out.println(person.getAge());
}
}
Object 타입 대신 Anyinstanceof 대신 is(Person) 대신 as Personfun printAgeIfPerson(obj: Any) {
if (obj is Person) {
val person = obj as Person // 타입 체크 없이 수행하면 예외가 발생
println(person.age)
}
}
is 키워드 사용 후에는 자동으로 형변환이 이루어지기에 as 키워드도 필요 없다.fun printAgeIfPerson(obj: Any) {
if (obj is Person) {
println(obj.age)
}
}
!is를 사용할 수 있다.
if (obj !is Person)obj에 null이 들어오는 경우
as 키워드에 Safe Call처럼 as?를 사용할 수 있다.as?를 쓰면 as와 달리 타입이 불일치 하는 경우에 예외 발생이 아닌 전체가 null이 된다.fun printAgeIfPerson(obj: Any?) {
val person = obj as? Person
println(person?.age)
}
Object 역할 (모든 객체의 최상위 타입)AnyAny 자체로는 null을 표현할 수 없기에 Any? 사용Any에 equals, hasCode, toString 존재Unit은 Java의 void와 동일한 역할void와 다르게 Unit은 그 자체로 타입 인자로 사용 가능Unit은 단 하나의 인스턴스만 갖는 타입을 의미
fun fail(message: String): Nothing {
throw IllegalArgumentException(message)
}
${변수}를 사용할 수 있다.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