본문 바로가기
IT ▶/Java & Web

[Java] "".equals() 와 '==' 으로 Null 값 체크방식 차이 정리

by Jordan_ 2019. 7. 26.
300x250

 

 

 

 

안녕하세요!!

 

 

개발 중에 데이터 값을 받아왔는데

 

해당 값이 빈값으로 와서 Null인지 체크를 해줘야하는 경우가 있을 것 입니다.

 

 

 

보통 "".eqauls() 와 같이 빈값과 같은지를 비교하거나 

 

InputData == NULL 과 같이 InputData 값이 null 인지를 비교하곤 합니다.

 

 

두개의 차이점과 null 체크하는 방법은 아래 정리해 보았습니다.

 

 

데이터 값이 null 인지 체크하는 방법

 

예시>

 

if("".equals(paramInfo.get("Data")) || paramInfo.get("Data") == null)

 

 

1>   null.equals(String) -> null 객체에서 equals 메소드 호출이 불가하여 Exception 발생

 

--> “”.equals(String) : 이 형태를 권장

 

2>   String == null

 

 

(String).equals(“”) 방식으로 선언할 경우,

 

String파라미터 성격으로 null이 나올 수 있는 경우에는 위에처럼 Exception 발생 가능

 

 

 ==’ 는 연산자로 주소값을 비교하고, equals’ 는 메소드로 실제 내용 자체를 비교합니다.

 

주소값은 대상을 해당 데이터가 가르키는 주소 입니다.

 

Call By Reference, Call By Value 의 차이에서 보면

 

CBV는 대상을 선언했을 때 해당 값을 할당받는 형태로 사용됩니다. '

Int, float, double, byte primitive type 입니다.

 

CBR은 대상을 선언하였을 때, 주소값이 부여된다고 합니다.

그 객체를 호출하면 해당 주소값을 불러오며 보통 Class, object(객체) 등이 있습니다.

 

 

 

728x90

 

 

 

일반적으로 String으로 변수를 선언해서 비교해보면

 

예시>

 

String tab1 = kkkk;

String tab2 = tab1;

String tab3 = new String (kkkk);

 

 

1>   tab1.eqauls(tab2)

 

->  tab1과 tab2는 ‘equals’ 메소드로 비교하여도 할당된 동일한 문자열로 true 입니다.

 

2>   tab1 == tab2

 

->  ‘==’ 연산자로 비교하여도 같은 주소값을 가르켜서 동일합니다.

 

3>   tab2.equals(tab3)

 

->   tab2와 tab3은 ‘equals’ 메소드로 비교하면 동일한 문자열로 True 입니다.

 

4>   tab2 == tab3

 

->  ‘==’ 연산자로 비교하면 tab3는 또 다른 객체로 선언이 되었으므로 다른 주소값이 선언되었고, 그 주소값을 비교하므로 결과는 False 입니다.

 

 

 

제일 깔끔한 NULL이나 빈값체크는 아래 형태로 선언해서 체크하는 것을 추천드립니다.!

 

if("".equals(paramInfo.get("Data")) || paramInfo.get("Data") == null)

 

 

 

 

***** 참고로 삼항연산자 방식도 많이 활용합니다.

 

-  조건식 ? 피연산자1 : 피연산자 2

 

->  조건식의 연산결과가 True 이면, 결과는 피연사자1, False 이면 결과는 피연산자2 출력

 

예시

VO.setRESULT_CD("S".equals(ResVal) ? "S" : "F");  // ResVal 값이 “S” 이면 “S”를 선언하고, 아니면 “F”로 선언한다.

 

 

728x90
반응형

Buy Me A Coffee
방문해주셔서 감사합니다! 커피 한잔 기부로 더 좋은 글, 정보 공유하겠습니다. Thank you for visiting! I will share better information and information with a cup of coffee.