코틀린 데이터 타입
2022-09-22(목요일)
코틀린 데이터 타입
지금부터는 코틀린이 제공하는 데이터 타입을 살펴보겠다. 그 전에 한가지 알아 둬야할 사실은 코틀린의 모든 변수는 객체라는 것이다. 따라 모ㄹ린의 모든 타입은 객체 타입이다. 정수를 다루는 타입이 Int인데 Int는 기초 데이터 타입이 아니라 클래스이다.
fun someFun(){
var data : Int = 10
var data2 : Int? = null //null 대입 가능
data1 = data1 + 10
data1 = data1.plus(10) //객체의 매서드 이용 가능
}
위 소스는 data1과 data2 변수를 Int 타입으로 선업했다. 만약 Int 타입이 기초 데이터 타입이라면 변수에 null을 대입할 수 없으며 매서드를 호출할 수도 없다. 하지만 코틀린의 모든 타입은 객체이므로 Int타입의 변수에 10이라는 정수뿐만 아니라 null을 대입할 수도 있다. 또 한 객체의 매서드도 호출할 수 있다.
Int, Short, Long, Double, Float, Byte, Boolean - 기초 타입 객체
기초 데이터를 객체로 표현하는 타입이다. 정수를 표현하는 Int, Short, Long과 실수를 표현하는 Double, Float, 2진수를 표현하는 Byte, 그리고 true나 false를 표현하는 Boolean 타입이 있다.
val a1 : Byte = 0b00001011
val a2 : Int = 123
val a3 : Short = 123
val a4 : Long = 10L
val a5 : Double = 10.0
val a6 : Float = 10.0f
val a7 : Boolean = true
Char, String - 문자와 문자열
Char는 문자를 표현하는 타입이다. 코틀린 코드에서 Char 타입의 데이터는 문자를 작은따옴표(’)로 감싸서 표현하며 Number 타입으로 표현할 수는 없다.
val a : Char = 'a'
if(a == 1){ // 오류!
}
String은 문자열을 표현하는 타입이다. String 타입의 데이터는 문자열을 큰따옴표(”)나 삼중따옴표(”””)로 감싸서 표현한다.
fun main(){
val str1 = "Hello \n World"
val str2 = """
Hello
Hello
"""
println("str1 : $str1")
println("str2 : $str2")
}
위 코드의 결과
str1 : Hello
World
str2 :
Hello
World
String타입의 데이터에 변수값이나 어떤 연산식의 결과값을 포함해야 할 때는 $기호를 이용해야한다 이를 문자열 템플릿이라고 한다.
Any - 모든 타입 가능
Any는 코틀린에서 최상위 클래스이다. 모든 코틀린의 클래스는 Any의 하위 클래스다. 따라서 Any 타입으로 선언한 변수에는 모든 타입의 데이터를 할당할 수 있다.
val data1 : Any = 10
val data2 : Any = "hello"
Class User
val data3 : Any = User()
Unit - 반환문이 없는 함수
Unit은 다른타입과 다르게 데이터의 형싱이 아닌 특수한 상황을 표현하려는 목적으로 사용한다.
Unit 타입으로 선언한 변수는 Unit 객체만 대입할 수 있다. 따라서 Unit 타입으로 변수를 선언할 수 있지만 의미가 없다. 이런 Unit 타입은 주로 함수의 변환 타입으로 사용한다. 함수에서 반환문이 없음을 명시적으로 나타낼 때 Unit 타입을 사용한다.
val data1 : Unit = Unit // Unit 타입을 사용한 예
fun some() : Unit { // Unit 타입을 사용한 예 - 반환문이 없는 함수
println(10 + 20)
}
fun some(){ // 반환 타입을 생략한 예
println(10 + 20)
}