728x90
null과 공백 ""의 차이
null : 어떠한 값으로도 초기화 되지 않음. 개발자가 어떤 값으로 사용하겠다는 예고와 같은 것으로 컴파일러가 인지함. 따라서 힙 메모리 상에 데이터를 만들지 않음. (변수를 어떠한 값으로도 초기화 하지 않음.)
공백 ("") : string형으로 빈 값을 메모리에 할당함. (변수를 빈값으로 초기화 함. null과 달리 인스턴스화 된 객체를 참조함.)
String a = "";
String b = null;
System.out.println(a == b); // false
System.out.println(a.equals(b)); // false
""는 빈 문자열(실제 문자열)이지만 null은 string변수가 아무 것도 가리키지 않는 상태를 의미하기 때문에 a와 b는 메모리에서 동일한 공간을 차지하지 않는다. 따라서 a == b는 false.
a.equals(b)에서 a와 b는 같은 문자열이 아니므로 false를 반환함.
a의 경우 실제 문자열(인스턴스화 된 객체)이므로 a.length(), a.substring(0, 1)과 같은 문자열 관련 함수를 사용할 수 있으나,
b는 null값이므로 NullPointerException 에러가 발생한다.
728x90
'JAVA' 카테고리의 다른 글
JAVA 자바 JSON 파일 쓰기/읽기 (한글 깨짐 인코딩 문제 해결법) (0) | 2022.05.11 |
---|---|
자바 JSON 만들기, 추가, 제거, 파싱하는 법과 예제 (0) | 2022.05.10 |
이클립스 코드 자동 완성 설정 : Content assist (0) | 2022.05.01 |
이클립스 스윙 JFrame import 에러, Unknown GUI toolkit 문제 해결법 (0) | 2022.05.01 |