728x90

 

없는 값을 체크 할 때 위의 둘을 쓰게 되는데

뭐가 다를까?

 

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이다

 

 

※ 비슷한 주제

 == vs equals

 

728x90
반응형

+ Recent posts