참고
- 코틀린은 JVM위에서 동작한다.
- 자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없이 main 메서드 생성, 실행이 가능하다.
- Android Studio에서 Tools > Kotlin > Show Kotlin ByteCode를 선택 Decomplie을 하면 코틀린 파일을 java class로 확인할 수 있다.
코틀린 원시 타입 종류 정리
코틀린의 자료형은 모두 대문자로 시작한다.
코틀린의 모든 데이터는 reference data type으로 컴파일 후 내부적으로 primitive type으로 동작한다.
- primitive type인 byte, short, int 등은 직접 사용하지 못한다.
- val(value) : 불변형 (immutable)
- var(variable) : 가변형 (mutable)
- 코틀린의 기본 자료형은 모두 객체이다.
자료형 변환 메소드를 사용해야 형변환이 가능하다.val a:Byte = 5.toByte() //Byte val b = 65.toChar() //Char val c = 10.toShort() //Short val d = 10 //Int val e = 10L //Long val f = 10.0f //Float val g = 10.0 //Double
예시와 같이 코틀린은 변수 선언시 자료형을 별도로 선언하지 않아도 값을 보고 유추한다.
▪️ 자료형 변환 메서드 종류
val num = 1L + 3 // num은 Long타입
String의 경우 여러 줄을 사용하고자 한다면 다음과 같이 사용할 수 있다.
val str = """ 코틀린 공부 파이팅!! """.trimIndent()
자바와 달리 코틀린은 "==" 연산자로 문자열 비교가 가능하다.
val num1 = 100 val str1 = "abc $num1" // abc 100 val str3 ="abc $num1.toString()" // abc 100.toString val str4 ="abc ${num1.toString()}" // abc 100
구체적으로 명시되지 않은 자료형을 자동 변환 해준다.
( = 값에 따라 자료형을 결정 )var cast:Number = 6.2 // cast 은 Double형으로 스마트캐스팅됨. println("value : $cast , data type: ${cast.javaClass}") cast = 12 //Integer 형으로 스마트캐스트 println("value : $cast , data type: ${cast.javaClass}") cast = 12L //Long 형으로 스마트캐스트 println("value : $cast , data type: ${cast.javaClass}") cast += 12.0f //Float형으로 스마트캐스트 println("value : $cast , data type: ${cast.javaClass}")
val num = 256 if (num is Int) { // num이 Int형일 때 print(num) } else if (num !is Int) { // num 이 Int형이 아닐 때, !(num is Int) 와 동일 print("Not a Int") }
여기서 자바와 차이점이 있다.
자바는 instanceOf 메서드로 타입체크를 수행한 후 다시 타입에 맞게 casting을 해야 했다.
하지만 코틀린은 타입체크와 동시에 casting을 한 번에 수행한다.val string = "타입캐스팅 후 자동으로 형 변환" val temp:Any = string if(temp is String){ println(temp) // 타입캐스팅 후 자동으로 형 변환 }
- Any는 코틀린의 최상위 객체
- 자료형이 정해지지 않은 경우 Any는 언제든 필요한 자료형을 자동 변환