안녕하세요!!
개발 중에 데이터 값을 받아왔는데
해당 값이 빈값으로 와서 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(객체) 등이 있습니다.
일반적으로 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”로 선언한다.
'IT ▶ > Java & Web' 카테고리의 다른 글
[Java] String 문자열 자르기, 치환하기 – substring, replace 함수 사용 (0) | 2019.10.08 |
---|---|
[Java] Random() 클래스, String 문자열 합치기(concat, append, +) 사용 방법 (0) | 2019.09.30 |
[JavaScript] 객체, 생성자 개념 (Object, Constructor Concept) (2) | 2019.05.12 |
[JavaScript] 배열, 반복문, 함수 개념 (0) | 2019.04.29 |
[JavaScript] Java 예제 공부 (0) | 2019.04.28 |