```
Kotlin 코틀린 Null 안정성 특징
```

이번 글을 통해 배워갈 내용
- Kotlin 코틀린 Null 안정성 특징
NPE
Kotlin type system에서는 Null reference를 제거하는데 큰 노력을 함
NPE는 Null Pointer Exception의 약자임
일반적인 경우 Null
Kotlin 에서 일반적으로 변수는 null 할당이 안됨
예) Null can not be a value of a non-null type String
nullable
null 을 할당하려면 String? 같이 표현해서 nullable 하게 해주어야 함
Safe calls
Safe calls 를 사용할 경우
?. null 이면 null 을 반환하고 아닌 경우 의도한 값을 반환합니다
Chain으로 사용하면 더 유용합니다
예 ) kimc?.company?.ace?.name
김 씨가 회사에 다닐 수도 있고 김 씨가 에이스일 수도 있고....
하나라도 null 이면 null 입니다
non null 값을 가지고만 연산을 실행하고 싶은 경우
fun case05() {
val strAndNulls: List<String?> = listOf("Kotlin", null)
for (item in strAndNulls) {
item?.let { print(item) }
}
}
rhs 대신 lhs에도 사용가능합니다
lhs 에 있는 게 하나라도 null 이면 메서드는 실행되지 않습니다.
fun case06() {
// kimc?.company?.ace?.name = AcePool.getManager()
}
Elvis 연산자
Elvis 연산자를 써서
if 문 대신에 짧은 식으로 변경 가능
전 // val l:Int = if (b != null) b.length else -1
후 // val l = b?.length?: -1
throw 에도 사용 가능
fun case07(b : String) {
// val l:Int = if (b != null) b.length else -1
// val l = b?.length?: -1
}
Collection에서 nullable type 만 제외하는 것도 가능
fun case08(){
val nullableList : List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
}
SafeCast
SafeCast 도 유용함
실패시 null을 반환
fun case09() {
val a = "1"
val aInt: Int? = a as? Int
}
// Kotlin type system 에서는 Null reference 를 제거하는데 큰 노력을 함
// NPE 는 Null Pointer Exception 의 약자임
// Kotlin 에서 일반적으로 변수는 null 할당이 안됨
fun case01() {
var a: String = "하이"
// a = null // Null can not be a value of a non-null type String
}
// null 을 할당하려면 String? 같이 표현해서 nullable 하게 해주어야 함
fun case02() {
var a: String? = "하이"
a = null
}
// null이 할당된 후 변경되지 않았다면
// 명시적으로 b 가 null이 아닌 것을 확인 가능
fun case03() {
var b: String? = null
val l = if (b != null) b.length else -1
}
// Safe calls 를 사용할 경우
// ?. null 이면 null 을 반환하고 아닌 경우 의도한 값을 반환합니다
// Chain 으로 사용하면 더 유용합니다
// 예 ) kimc?.company?.ace?.name
// 김씨가 회사에 다닐수도 있고 김씨가 에이스일수도 있고 ....
// 하나라도 null 이면 null 입니다
fun case04() {
val a = "Kotlin"
val b: String? = null
println(b?.length)
println(a?.length)
}
// non null 값을 가지고만 연산을 실행하고 싶은 경우
fun case05() {
val strAndNulls: List<String?> = listOf("Kotlin", null)
for (item in strAndNulls) {
item?.let { print(item) }
}
}
// rhs 대신 lhs 에도 사용가능합니다
// lhs 에 있는게 하나라도 null 이면 메서드는 실행되지 않습니다.
fun case06() {
// kimc?.company?.ace?.name = AcePool.getManager()
}
// Elvis 연산자를 써서
// if 문 대신에 짧은 식으로 변경 가능
// 전 // val l:Int = if (b != null) b.length else -1
// 후 // val l = b?.length?: -1
// throw 에도 사용가능
fun case07(b : String) {
// val l:Int = if (b != null) b.length else -1
// val l = b?.length?: -1
}
// Collection에서 nullable type 만 제외하는 것도 가능
fun case08(){
val nullableList : List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
}
// SafeCast 도 유용함
fun case09() {
val a = "1"
val aInt: Int? = a as? Int
}
fun example05() {
println("example05")
case01()
case02()
case03()
case04()
case05()
case06()
case07("hi")
case08()
case09()
}
fun main(args: Array<String>) {
example05()
}
// https://kotlinlang.org/docs/null-safety.html#the-operator
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
https://kotlinlang.org/docs/null-safety.html
Null safety | Kotlin
kotlinlang.org
'Kotlin > Kotlin 이론' 카테고리의 다른 글
Kotlin 이론 4 ) 코틀린 예외처리 특징 (0) | 2022.08.30 |
---|---|
Kotlin 이론 3 ) 코틀린 조건 및 루프 특징 (0) | 2022.08.30 |
Kotlin 이론 2 ) 코틀린 함수 특징 (0) | 2022.08.29 |
Kotlin 이론 1 ) 코틀린 변수 특징 (0) | 2022.08.29 |
```
Kotlin 코틀린 Null 안정성 특징
```

이번 글을 통해 배워갈 내용
- Kotlin 코틀린 Null 안정성 특징
NPE
Kotlin type system에서는 Null reference를 제거하는데 큰 노력을 함
NPE는 Null Pointer Exception의 약자임
일반적인 경우 Null
Kotlin 에서 일반적으로 변수는 null 할당이 안됨
예) Null can not be a value of a non-null type String
nullable
null 을 할당하려면 String? 같이 표현해서 nullable 하게 해주어야 함
Safe calls
Safe calls 를 사용할 경우
?. null 이면 null 을 반환하고 아닌 경우 의도한 값을 반환합니다
Chain으로 사용하면 더 유용합니다
예 ) kimc?.company?.ace?.name
김 씨가 회사에 다닐 수도 있고 김 씨가 에이스일 수도 있고....
하나라도 null 이면 null 입니다
non null 값을 가지고만 연산을 실행하고 싶은 경우
fun case05() {
val strAndNulls: List<String?> = listOf("Kotlin", null)
for (item in strAndNulls) {
item?.let { print(item) }
}
}
rhs 대신 lhs에도 사용가능합니다
lhs 에 있는 게 하나라도 null 이면 메서드는 실행되지 않습니다.
fun case06() {
// kimc?.company?.ace?.name = AcePool.getManager()
}
Elvis 연산자
Elvis 연산자를 써서
if 문 대신에 짧은 식으로 변경 가능
전 // val l:Int = if (b != null) b.length else -1
후 // val l = b?.length?: -1
throw 에도 사용 가능
fun case07(b : String) {
// val l:Int = if (b != null) b.length else -1
// val l = b?.length?: -1
}
Collection에서 nullable type 만 제외하는 것도 가능
fun case08(){
val nullableList : List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
}
SafeCast
SafeCast 도 유용함
실패시 null을 반환
fun case09() {
val a = "1"
val aInt: Int? = a as? Int
}
// Kotlin type system 에서는 Null reference 를 제거하는데 큰 노력을 함
// NPE 는 Null Pointer Exception 의 약자임
// Kotlin 에서 일반적으로 변수는 null 할당이 안됨
fun case01() {
var a: String = "하이"
// a = null // Null can not be a value of a non-null type String
}
// null 을 할당하려면 String? 같이 표현해서 nullable 하게 해주어야 함
fun case02() {
var a: String? = "하이"
a = null
}
// null이 할당된 후 변경되지 않았다면
// 명시적으로 b 가 null이 아닌 것을 확인 가능
fun case03() {
var b: String? = null
val l = if (b != null) b.length else -1
}
// Safe calls 를 사용할 경우
// ?. null 이면 null 을 반환하고 아닌 경우 의도한 값을 반환합니다
// Chain 으로 사용하면 더 유용합니다
// 예 ) kimc?.company?.ace?.name
// 김씨가 회사에 다닐수도 있고 김씨가 에이스일수도 있고 ....
// 하나라도 null 이면 null 입니다
fun case04() {
val a = "Kotlin"
val b: String? = null
println(b?.length)
println(a?.length)
}
// non null 값을 가지고만 연산을 실행하고 싶은 경우
fun case05() {
val strAndNulls: List<String?> = listOf("Kotlin", null)
for (item in strAndNulls) {
item?.let { print(item) }
}
}
// rhs 대신 lhs 에도 사용가능합니다
// lhs 에 있는게 하나라도 null 이면 메서드는 실행되지 않습니다.
fun case06() {
// kimc?.company?.ace?.name = AcePool.getManager()
}
// Elvis 연산자를 써서
// if 문 대신에 짧은 식으로 변경 가능
// 전 // val l:Int = if (b != null) b.length else -1
// 후 // val l = b?.length?: -1
// throw 에도 사용가능
fun case07(b : String) {
// val l:Int = if (b != null) b.length else -1
// val l = b?.length?: -1
}
// Collection에서 nullable type 만 제외하는 것도 가능
fun case08(){
val nullableList : List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
}
// SafeCast 도 유용함
fun case09() {
val a = "1"
val aInt: Int? = a as? Int
}
fun example05() {
println("example05")
case01()
case02()
case03()
case04()
case05()
case06()
case07("hi")
case08()
case09()
}
fun main(args: Array<String>) {
example05()
}
// https://kotlinlang.org/docs/null-safety.html#the-operator
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
https://kotlinlang.org/docs/null-safety.html
Null safety | Kotlin
kotlinlang.org
'Kotlin > Kotlin 이론' 카테고리의 다른 글
Kotlin 이론 4 ) 코틀린 예외처리 특징 (0) | 2022.08.30 |
---|---|
Kotlin 이론 3 ) 코틀린 조건 및 루프 특징 (0) | 2022.08.30 |
Kotlin 이론 2 ) 코틀린 함수 특징 (0) | 2022.08.29 |
Kotlin 이론 1 ) 코틀린 변수 특징 (0) | 2022.08.29 |