공부하다죽어라

기본 타입

# JAVA 
int num1 = 3;
long num2 = 4L;
num1 + num2 // 자바에서는 가능

# Kotlin 
val num1: Int = 1
val num2: Long = 2
num1 + num2 // 컴파일 에러 발생

[자바] 기본 타입간의 변환은 암시적으로 이루어질 수 있다.
[코틀린] 기본 타입간의 변환은 명시적으로 이루어져야 한다.

타입 캐스팅

# JAVA
public static void printAgeIfPerson(Object obj) {
	if(obj instanceof Person) {
    	Person person = (Person) obj;
        System.out.println(person.getAge());
    }
}

# Kotlin 
fun printAgeIfPerson(obj: Any?) {
	if(obj is Person) {
    	val person = obj as? Person 
        println(person?.age);
    }
}

코틀린의 특이한 타입 3가지

Any
Java의 Object 역할. (모든 객체의 최상위 타입)
모든 Primitive Type의 최상의 타입도 Any이다.
Any 자체로는 null을 포함할 수 없어 null을 포함하고 싶다면, Any?로 표현.
Any 에 equals / hashCode / toString 존재
Unit 
Unit은 Java의 void와 동일한 역할.
void와 다르게 Unit은 그 자체로 타입 인자로 사용 가능하다.
함수형 프로그래밍에서 Unit 은 단 하나의 인스턴스만 갖는 타입을 의미. 즉, 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현
Nothing
Nothing은 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할
무조건 예외를 반환하는 함수 / 무한 루프 함수 등

String interpolation / String indexing 

val person = Person("김수혁", 27)
val log = "사람의 이름은 ${person.name}이고 나이는 ${person.age}"

val withoutIndent = 
	"""
    	123
        456
        ABC
    """.trimIndent()
println(withoutIndent)

총정리
코틀린의 변수는 초기값을 보고 타입을 추론하며, 기본 타입들 간의 변환은 명시적으로 이루어진다.
코틀린에서는 is, !is, as, as? 를 이용해 타입을 확인하고 캐스팅한다.
코틀린의 Any는 Java의 Object와 같은 최상위 타입이다.
코틀린의 Unit은 Java의 void와 동일하다.
코틀린에 있는 Nothing은 정상적으로 끝나지 않는 함수의 반환을 의미한다

'개발 > Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린에서 Null 다루기  (0) 2021.06.29
[Kotlin] 코틀린에서 변수 다루기  (0) 2021.06.28
profile

공부하다죽어라

@슥혁

감사합니다 👍🏻