-
[Java] 변수와 초기화, null, nullPointerException언어/Java 2024. 11. 5. 09:32
학습 페이지
www.inflearn.com
아래 내용은 위 링크에서 더 자세히 볼 수 있습니다.
단축키
ctrl + alt + v
반환할 때 변수명 자동생성- 멤버변수 : 자동 초기화
- 인스턴스의 멤버 변수는 인스턴스를 생성할 때, 자동으로 초기화
- int = 0, boolean = false, 참조형 = null
- 개발자가 초기값을 직접 지정할 수 있다.
- 지역 변수 : 수동 초기화
- 지역변수는 항상 직접 초기화 해야 한다.
int a; // 초기화 하지 않음. 컴파일 에러 int b = 10; // 10으로 초기화
- null: 직접 초기화할 수 있다.
package ref; public class NullMain1 { public static void main(String[] args) { Data data = null; System.out.println("1. data: " + data); data = new Data(); System.out.println("2. data: " + data); data = null; System.out.println("3. data: " + data); } } /* 1. data: null 2. data: ref.Data@7291c18f 3. data: null */
- nullPointerException
- null을 가리키는 pointer 이다
- 즉, 객체를 참조할 때, . dot 을 사용하는 데 null을 가리키는 것
package ref; public class NullMain2 { public static void main(String[] args) { Data data = null; data.value = 10; // nullPointerException System.out.println(data.value); } }
- data.value
- null.10 -> 오류
package ref; public class NullMain3 { public static void main(String[] args) { BigData bigData = new BigData(); System.out.println("bigData.count : " + bigData.count); // 0 System.out.println("bigData.data : " + bigData.data); // null System.out.println("bigData.data.value : " + bigData.data.value); //nullPointerException } }
- bigData.data.value
- 0x001.data.value
- null.value -> 오류
[위 문제 해결하기]
package ref; public class NullMain4 { public static void main(String[] args) { BigData bigData = new BigData(); bigData.data = new Data(); System.out.println("bigData.count : " + bigData.count); // 0 System.out.println("bigData.data : " + bigData.data); // null System.out.println("bigData.data.value : " + bigData.data.value); //nullPointerException } }
- bigData.data.value
- 0x001.data.value
- 0x002.value
- 0
NullPointerException 이 발생하면 null 값에 .(dot) 을 찍었다고 생각하면 쉽게 문제를 풀 수 있다.
'언어 > Java' 카테고리의 다른 글
[Java] 생성자, 패키지 (0) 2024.11.06 [Java] 객체 지향 프로그래밍 (4) 2024.11.06 [Java] 기본형 vs 참조형 (0) 2024.11.05 [Java] 클래스, 객체(인스턴스) (5) 2024.11.04 [Java] 반환타입, 메서드 오버로딩 (0) 2024.10.30 - 멤버변수 : 자동 초기화