[코틀린기초] 1. 변수와 자료형

변수 선언

변수를 선언하기 위해서는 val과 var을 사용한다. val은 값이 변경되지 않을 때, var은 값이 변경되어야 한다면 사용한다.

ex) val username : String = “Kildong”

코틀린의 자료형은 다른 언어와 달리 참조형 자료형만 사용한다.

이는 코틀린의 성능 최적화에 따라 코틀린 컴파일러에서 기본형으로 대체된다.

자료형

1. 부호 있는 정수 자료형

Long 8바이트
Int 4바이트
Short 2바이트
Byte 1바이트

2. 부호 없는 정수 자료형

ULong 8바이트
UInt 4바이트
UShort 2바이트
UByte 1바이트

자료형을 생략하면 자동으로 추론한다. 기본은 모두 Int로 추론하지만 실수는 Double형으로 추론한다.

ex) val num1 = 127 (Int)
val num2 = 9223372036854775807 (Long)

val exp1 = 123L (Long)
val exp2 = 0x0F (Int)
val exp3 = 0b00001011 (Int)

val exp4 : Byte = 127 (기본적으로 Int로 추론하기 때문에 Byte로 명시)
val exp5 = 32767(명시하지 않으면 Short 범위 값도 Int로 추론)
val exp6 : Short = 32767(명시하여 Short로 지정)

val exp7 : UInt = 153u (u를 붙여서 부호없는 정수자료형 지정)
val exp8 : ULong = 153uL

3. 실수 자료형

Float 4바이트
Double 8바이트

ex)
val exp9 = 3.14 (실수는 기본으로 Double로 추론)
val exp10 = 3.14F (Float로 추론)

4. 논리 자료형

Boolean 1비트

true, false 두개가 존재

ex) val isOpen = true

5. 문자 자료형

Char 2바이트

작은따옴표로 감싸서 표현 ex) val ch = ‘c’

6. 문자열 자료형

String으로 선언되며 Heap의 String Pool이라는 공간에 구성된다.
이때 같은 문자열이라면 다른 변수더라도 같은 주소를 참조한다. (자바와 동일)

ex) var str : String = “Hello”

표현식에서 문자열

$문자를 이용하여 변수값 참조 가능

var a = 1
val s1 = “a is $s”

NULL

코틀린의 변수 선언은 기본적으로 null을 허용하지 않음

null을 가능하게 하고 싶다면 ?기호를 사용

ex) val a: Int? = null

NPE (NullPointerException)

사용할 수 없는 null 변수에 접근하면서 발생하는 예외

Safe Call (?.)

null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 연산자

변수 이름 뒤에 ?. 기호를 사용 str?.length 일때 str이 null이면 length를 수행하지 않는다.

!!연산자는 non-null 단정기호로, 변수가 null일리 없다고 가정하는 연산자. NPE가 발생할 수 있다.

?:연산자는 엘비스 연산자로, 변수가 null이 아닌지 검사하여 null이 아니라면 왼쪽의 식을 실행, null이면 오른쪽 식을 실행

ex) val len = str?.length ?: -1 (str이 null이면 -1이 대입, null이 아니면 str.length가 대입)