반응형
◼️ Kotlin
- 코틀린은 JetBrains에서 개발하고 보급.
- 자바와 달리 문장 끝에 세미콜론(;)은 옵션
- Google IO 2017에서 Android 공식 언어로 추가 발표
- 변수는 Nullable과 NotNull로 나뉨
◼️ 코틀린의 장점
- 자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)
- 자바와 비교했을때 NullPointer Exception에서 비교적 자유로움
- 데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원
- 자바와 완벽하게 상호호환됨
- 자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능
- 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능
- 세미콜론 생략 가능
◼️ 참고
코틀린은 JVM위에서 동작한다.
자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없이 main 메서드 생성, 실행이 가능하다.
Android Studio에서 Tools > Kotlin > Show Kotlin ByteCode를 선택 Decomplie을 하면 코틀린 파일을 java class로 확인할 수 있다.
◼️ 자료형
코틀린 원시 타입 종류 정리
- 정수 타입: Byte, Short, Int, Long
- 부동 소수점 수 타입: Float, Double
- 문자 타입: Char
- 불리언 타입: Boolean
코틀린의 자료형은 모두 대문자로 시작한다.
코틀린의 모든 데이터는 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}")
◼️ is 키워드를 사용한 형 검사
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는 언제든 필요한 자료형을 자동 변환
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Coroutine 실행 순서 살펴보기 (0) | 2024.07.02 |
---|---|
[Effective Kotlin] 2장 가독성 : Item 15번 ~ 18번 (0) | 2024.05.12 |
[Kotlin] 자료형 | 자료형 변환 | 스마트 캐스트 (0) | 2024.05.04 |
[Kotlin] infix & top level function (1) | 2024.04.28 |
[Effective Kotlin] 2장 가독성 : Item 11번 ~14번 (0) | 2024.04.28 |