코틀린 데이터 타입

지금부터는 코틀린이 제공하는 데이터 타입을 살펴보겠다. 그 전에 한가지 알아 둬야할 사실은 코틀린의 모든 변수는 객체라는 것이다. 따라 모ㄹ린의 모든 타입은 객체 타입이다. 정수를 다루는 타입이 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)
}