Android/Kotlin

선언방식, null 값을 사용하는 방법에 대해서(feat. null pointer exception)

appmaster 2021. 7. 2. 15:43

클래스 이름은 파스칼 표기법을 사용합니다. (모든 단어를 대문자로 시작)

ex) ClassName

 

 

함수나 변수 이름은 카멜 표기법을 사용합니다. (첫단어만 소문자로 시작)

ex) functionName

 

 

var val
일반적으로 통용되는 변수 언제든지 읽기 쓰기가 가능함 선언시에만 초기화 가능. 중간에 값을 변경할 수 없음

runtime시 값이 변경되는걸 원치 않는다면 val을 이용합니다.

 

 

이 현상은 일반 고전언어와 가장 큰 차이점인데요,

고전적인 언어들은 변수가 선언된 후 초기화 되지 않으면 기본값으로 초기화 되거나 값이 할당되지 않았다는 표시로 null값을 가지게 됩니다.

하지만, kotlin은 기본변수에서 null을 허용하지 않으며, 또한 변수에 값을 할당하지 않은채로 사용하게 되면 문법에러를 표시하게 됩니다. 그리하여 컴파일을 막아주고 의도치 않은 동작이나 null pointer exception등을 원천적으로 차단해 준다는 장점이 있습니다. 

 

 

그래서 값을 할당하면 됩니다.

 

 

 

그런데 프로그램에 따라서는 변수에 값이 할당되지 않았다는것을 하나의 정보로 사용하는 경우도 있을 수 있습니다.

이럴때 사용하는 방법은 nullable변수입니다.

 

nullable은 값이 null인 상태로 연산할 시 null pointer exception이 발생할 수 있으므로 꼭 필요한 경우에 한해 주의해서 사용하셔야 합니다. 

 

 

 

cf. null pointer exception이란?

null값은 일반적으로 참조 변수에 값이 지정되지 않았음을 나타내는데 사용됩니다. 둘째, 연결 목록 및 트리와 같은 컬렉션에 대해 null 노드를 나타 내기 위해 null값이 필요합니다. 싱글 톤 패턴과 같은 디자인 패턴은 null값을 사용합니다.

결론적으로 java의 null값은 많은 용도로 사용됩니다. java의 특정 시나모든 단어를 대문자로 시작)

null pointer exception 발동

* 자바 데이터 타입은 기본 타입(primitive type)과 참조 타입(reference type)이 있습니다.

* 자바는 기본적으로 초기화되지 않은 객체 참조 변수에 null을 할당합니다.

* 즉, 참조 변수를 선언하고 초기화하지 않으면 java에서 null로 지정된 특수 값을 지정합니다.

* 이를 가지고 위의 작업을 수행하면 NPE가 발생하게 됩니다.

 

 

feat. NPE가 발생하는 경우

* null 객체의 instance 함수(static이 아닌 method)를 호출하는 경우

* null 객체의 instance 변수에 접근하는 경우

* null 배열 객체의 length를 구하려는 경우

* null 배열 객체의 값을 인덱스로 접근하는 경우

* 애플리케이션 단에서 NPE를 던지는 경우

'Android > Kotlin' 카테고리의 다른 글

타입추론과 함수  (0) 2021.07.02
형변환과 배열  (0) 2021.07.02
Also 함수  (0) 2021.07.02
Apply 함수 (Java와 비교)  (0) 2021.07.02
Kotlin VS Java (null의 차이)  (0) 2021.07.02