728x90
반응형
자바에서 실수로 발생하는 대표적인 에러 중 하나를 살펴보자.
자바에서는 '비어있음'이 null이라는 값으로 표현된다. 단, null은 참조형 변수(Reference Type)만 가질 수 있는 값이다.
Person p1 = null;
System.out.println(p1);
null
만약 null을 보관하고 있는 변수의 메소드를 호출하려고 하면 NullPointerException이라는 오류가 난다는 점을 주의하자
Person p1 = null;
p1.getName();
Exception in thread "main" java.lang.NullPointerException
대처법
아래 코드는 오류가 날 것이다.
people[1]과 people[4]는 null이기 때문에 p.getName()을 할 수가 없다.
Person[] people = new Person[5];
people[0] = new Person("김신의", 28);
people[2] = new Person("문종모", 26);
people[3] = new Person("서혜린", 21);
for (int i = 0; i < people.length; i++) {
Person p = people[i];
System.out.println(p.getName());
}
이 문제를 해결하기 위해서는 p가 null인지 먼저 확인을 해주면 된다.
Person[] people = new Person[5];
people[0] = new Person("김신의", 28);
people[2] = new Person("문종모", 26);
people[3] = new Person("서혜린", 21);
for (int i = 0; i < people.length; i++) {
Person p = people[i];
if (p != null) {
System.out.println(p.getName());
} else {
System.out.println(i + "번 자리는 비었습니다.");
}
}
김신의
1번 자리는 비었습니다.
문종모
서혜린
4번 자리는 비었습니다.
728x90
반응형
'TIL > Java' 카테고리의 다른 글
[Java] 변수를 안전하게 만드는 법: final (0) | 2022.01.07 |
---|---|
[Java] 기본형vs참조형 / null 퀴즈 (0) | 2022.01.07 |
[Java] 기본형 vs 참조형 (0) | 2022.01.07 |
[Java] 중간고사: 문제 해결 능력 기르기_코드잇 소개 프로그램 (0) | 2022.01.07 |
[Java] 콘솔 입력 받기(Scanner) (0) | 2022.01.07 |