널이란 객체가 선언되었지만 초기화되지 않은 상태를 의미한다. 개게는 데이터가 저장된 주소를 참조하므로 참조 변수라고 한다. 객체에는 주소가 저장되며 이 주소로 메모리에 접근해 데이터를 이용한다. 그런데 널은 객체가 주소를 가지지 못한 상태를 나타낸다.
1. Type safety : Kotlin은 변수와 식을 컴파일 시 알 수 있도록 보장하고 형식 불일치와 같은 일반적인 오류를 방지하기 위해 엄격한 입력 규칙을 적용합니다. 예를 들어 변수를 Int(integer) 유형으로 선언하는 경우 String(text) 유형의 값을 할당할 수 없다.
var x: Int = 42
x = "hello" // error: Type mismatch
2.Null safety : Kotlin은 개발자가 런타임 오류의 일반적인 소스인 NPE(Null pointer exception)를 피할 수 있도록 Null safety 기능을 제공합니다. 코틀린의 유형 시스템은 nullable과 non-nullable 유형을 구별하며 개발자들이 nullability를 명시적으로 처리하도록 요구한다. 예를 들어, 변수가 null로 선언된 경우(?) 변수를 사용하기 전에 null을 확인해야 한다.
var s: String? = null
s.length // error: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
null 가능 변수를 안전하게 사용하려면 안전 호출 연산자(?) 또는 Elvis 연산자(?:)를 사용하여 기본값을 제공할 수 있다
3. Exception safety : Kotlin의 예외 처리 메커니즘은 런타임 오류를 안전하게 처리하고 코드의 예기치 않은 상태에서 복구할 수 있는 방법을 제공한다. 코틀린은 예외를 처리하고 충돌을 방지하기 위해 트라이캐치 블록의 사용을 권장한다. 또한 Kotlin은 예외가 던져졌는지 여부에 관계없이 항상 실행되는 최종 블록을 제공한다.
fun divide(a: Int, b: Int): Int {
try {
return a / b
} catch (e: ArithmeticException) {
println("Error: ${e.message}")
} finally {
println("Operation completed.")
}
return 0
}
val result = divide(10, 0) // prints "Error: / by zero" and "Operation completed."
두 번째 인수가 0이면 ArmithicException이 던져지고, 포착되어 콘솔에 인쇄되고, 마지막으로 완료 메시지를 인쇄하기 위해 블록이 실행된다.
'Android' 카테고리의 다른 글
Android Hilt를 이용한 의존성주입 이해하기 (0) | 2023.04.16 |
---|---|
Recommend 10 sites to help developers (0) | 2023.04.07 |
안드로이드 mvp,mvvm 패턴과 샘플코드 (0) | 2023.03.09 |
개발자가 되는법 (0) | 2023.02.05 |
안드로이드 발전과정 (0) | 2023.02.05 |
댓글