없는 값을 체크 할 때 위의 둘을 쓰게 되는데
뭐가 다를까?
1. isEmpty()
인스턴스는 생성 되어있는 상태
but 안에 값은 비어있는 상태(정확하게는 ""으로 값이 들어가있는 상태)
- null과 공백데이터는 엄연히 다르다
java 1.6버젼에서 추가됨
ex) 빈 항아리
2. == null
null은 인스턴스가 생성되지 않은 상태
즉, 아무런 주소값을 가지고 있지 않는 상태이며, 값 자체가 존재하지 않음
ex)항아리 자체가 없음
직접 테스트해보자
// isEmpty() vs == null 차이
String testEmpty = "";
String testNull = null;
// 1. 공백값 & isEmpty() 체크
if(testEmpty.isEmpty()){
System.out.println("1 : "+testEmpty);
}
// 2. null & isEmpty() 체크
if(testNull.isEmpty()){
System.out.println("2 : "+testNull);
}
// 3. 공백값 & null 체크
if(testEmpty == null){
System.out.println("3 : " + testEmpty);
}
// 4. null & null 체크
if(testNull == null){
System.out.println("4 : "+ testNull);
}
2번인 13라인에 NullPointerException 발생
공백 값이지만 값을 체크하는 거기 때문에 애초에 값 자체가 들어오지 않았기 때문에 NullPointerException이 발생한 것
2번을 주석처리하고 다시 돌려보면
조건이 true인 것만 발동하니 1,4번만 출력되는 걸 알 수 있다
3번은 공백에 null을 체크한거라 애초에 인스턴스가 존재하기 때문에 null 자체가 아니니 false이다
※ 비슷한 주제
'JAVA > 개념정리' 카테고리의 다른 글
[Java] For each문 (=향상된 for문, 개선된 for문) (1) | 2022.09.19 |
---|---|
[Java] Iterator & ListIterator +@Enumeration (0) | 2022.09.18 |
[Java] 자바 기본 API 2 : Wrapper Class(래퍼 클래스) (0) | 2022.08.21 |
[Java] 자바 기본 API 1 : String Class 2 - 자주 쓰이는 메소드 (0) | 2022.08.20 |
[Java] 자바 기본 API 1 : String Class 1 (0) | 2022.08.20 |