반응형
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()에서 '!!' 를 변수 뒤에 붙여줌으로써 예외처리를하게 됩니다.
반응형
'프로그래밍 > Kotlin' 카테고리의 다른 글
Kotlin] List 기능 설명(vector와 array의 차이점) (0) | 2020.07.18 |
---|---|
Kotlin] for문 vs foreach문 (0) | 2020.07.18 |
Kotlin] for문, while문 사용법 (0) | 2020.07.17 |
Kotlin] 코틀린 if문 형식(when, 범위지정) (0) | 2020.07.16 |
Kotlin] print, println에 대해서 (0) | 2020.07.03 |
댓글