hyeals study
[코틀린] 타입 시스템 (2) - 원시 타입 본문
* 코틀린에서는 자바와 다르게 원시타입과 래퍼 타입을 구분하지 않음.
[원시 타입(primitive type)]
- 원시 타입: 이 타입의 변수에는 값이 직접 들어감. ex) int 등
- 참조 타입(reference type): 이 타입의 변수에는 메모리상의 객체 위치가 들어감. ex) String 등
* 자바의 경우에는 참조 타입이 필요한 경우 특별한 래퍼 타입으로 원시 타입의 값을 감싸서 사용함.
☞ 하지만 코틀린에서는 원시 타입과 래퍼 타입을 구분하지 않고 항상 같은 타입을 사용함.
※ 원시 타입 종류 정리
- 정수 타입: Byte, Short, Int, Long
- 부동 소수점 수 타입: Float, Double
- 문자 타입: Char
- 불리언 타입: Boolean
[널이 될 수 있는 원시 타입]
* 널 참조를 자바의 참조 타입의 변수에만 대입할 수 있어서 널이 될 수 있는 코틀린 타입은 자바 원시 타입으로 표현할 수 없음.
∴ 코틀린에서 널이 될 수 있는 원시타입은 자바의 래퍼 타입으로 컴파일 됨.
[숫자 변환]
* 코틀린은 한 타입의 숫자를 다른 타입으로 자동 변환 해주지 않음
예를 들어 아래와 같은 경우 컴파일 에러가 발생함
따라서 아래와 같이 직접 변환 메소드를 호출해야함
- 위의 코드 처럼 코틀린은 모든 원시 타입에 대한 변환 함수를 제공함 (Boolean 제외)
※ 형 변환 함수 종류
- toByte()
- toShort()
- toChar() 등..
[Any 타입]
* Any 타입: 자바에서 object가 클래스의 최상위 타입인 것과 마찬가지로 코틀린에서 널이 될 수 없는 타입의 최상위 타입임.
* 만약 Any 타입에 널을 포함하는 모든 값을 대입할 변수를 원하면 Any? 타입을 사용하면 됨
[Unit 타입]
* 코틀린에서 Unit 타입은 자바에서 void과 같은 기능을 함
☞ 값을 반환하지 않는 함수의 반환 타입으로 사용함
- 위와 같이 아무 값도 반환하지 않는 함수의 반환 타입으로 Unit 타입을 사용할 수 있음
- 위 코드는 fun f() {...} 와 같은 의미임
<Unit 과 void의 차이>
☞ Unit은 타입 인자로 쓸 수 있지만, void는 타입 인자로 쓸 수 없음
* Unit타입에 속한 값은 단 하나임 (Unit)
* Unit타입은 Unit값을 묵시적으로 반환함
[Nothing 타입]
* Nothing 타입: 아무 값도 포함하지 않음. 함수의 반환 타입이나 반환 타입으로 쓰일 타입 파라미터로만 쓸 수 있음
→ Nothing 타입의 변수를 선언해도 그 변수에 아무 값도 저장할 수 없기 때문에 아무 의미도 없음
본 게시물은 "Kotlin IN ACTION"을 참고함.
'코틀린' 카테고리의 다른 글
[코틀린] 연산자 오버로딩 & 관례 - (2) 비교연산자 오버로딩 (0) | 2020.02.25 |
---|---|
[코틀린] 연산자 오버로딩 & 관례 - (1) 산술연산자 오버로딩 (0) | 2020.02.25 |
[코틀린] 타입 시스템 (1) - 널 가능성 (0) | 2020.02.23 |
[코틀린] 수신 객체 지정 람다 (0) | 2020.02.22 |
[코틀린] 람다식 & 멤버 참조 (0) | 2020.02.21 |