[JAVA] null과 공백 ""의 차이

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