본문 바로가기
프로그래밍/Kotlin

Kotlin] 변수 입력 방법.(타입 캐스팅, null)

by Hwan2 2020. 7. 16.
반응형

1. var과 val

코틀린에선 자료형을 선언하지 않을 경우 컴파일러가 데이터 값을 기반으로 자료형을 판단하게 됩니다.


var은 가변 변수로 값을 바꿀 수 있습니다.

val은 정적 변수로 값을 바꿀 수 없습니다. (const개념)



fun main(args:Array<String>){
var i = 10;
val j = 10.4;

i = 20 //ok
j = 30.0 //fail
}



2. 숫자 표현.

코틀린에선 숫자표현을 다르게 할 수 있습니다.

fun main(args:Array<String>){
var a = 10_000_000;
var b = 10000000;
var c = 0xFFFF_ABCD_0123
println(a) //output : 10000000
println(b) //output : 10000000
println(c) //output : 281473564082467
println(c.toString(16)) //output : ffffabcd0123
}



3. 타입 캐스트(Type cast)

fun main(args:Array<String>){
var a = 10

a = 10.5 //error
a = "hi" //error


var b : Double = a //error
var b : String = a //error

var c = a.toDouble() //ok
var c = a.toString() //ok

}


한번 정해진 타입은 바뀌지 않습니다.

따라서 새로운 자료형을 얻을 때는 새로운 변수를 선언하거나 .toDouble()같은 함수를 호출하여 형변환을 해야 합니다.


4. 변수 자료형 직접 선언

fun main(args:Array<String>) {
var a: Byte = 10
var b: Int = 20
var c: Double = 10.5
var d: String = "hi"
var e: Long = 10L
}

이런식으로 자료형을 선언해 변수에 직접적으로 자료형을 부여할 수 있습니다.



5. null

fun main(args:Array<String>) {
var s: String

s = null; //error
s = "hi" //ok
}

코틀린은 기본적으로 null로 초기화 할 수 없습니다.

하지만 코트린에선 null을 입력받을 수 있게 키워드를 제공해 줍니다.


fun main(args:Array<String>) {
var s: String?

s = null; //ok
s = "hi" //ok
println(s) //output : hi
}

변수의 자료형을 명시적으로 선언해준 뒤 '?'를 붙여주는 것입니다.

'?' 의 뜻은 "해당 변수에는 null이 입력될 수 있다." 라는 뜻입니다.



응용해보면 다음과 같이 할 수 있을 것입니다.


fun string_check(s: String?){
if(s == null) println("null")
else println("not null")
}

fun main(args:Array<String>) {
var s: String?
s = null
string_check(null);
string_check(s)
s = "hi"
string_check(s)
}
//output : null
//output : null
//output : not null


6. NullPointerException

코틀린에서는 NullPointerException을 호출할 수 있는데, 다음과 같은 예제를 보겠습니다.

fun string_check(s: String?){
println(s.length)
}

fun main(args:Array<String>) {
var s: String?
s = null
string_check(s)
}

위 예제를보면 string_check()함수는 s의 길이를 호출하고 있습니다.

하지만 null값이 입력된다면 오류가 나오겠죠.


이러한 실수로인한 오류를 잡아주고자 코틀린에서는 다음과 같은 null값에 대한 예외처리를 진행하게 됩니다.


fun string_check(s: String?){
println(s!!.length)
}

fun main(args:Array<String>) {
var s: String?
s = null
string_check(s)
}


s.length()에서 '!!' 를 변수 뒤에 붙여줌으로써 예외처리를하게 됩니다.


반응형

댓글


스킨편집 -> html 편집에서