2013-05-18 2 views
27

null 문자열 (String s = null)과 빈 문자열 (String s = "")의 차이점은 무엇입니까?null과 빈 문자열의 차이

String s1 = ""; //print statement does not print any thing for s1 but s1.length()=0 
String s2 = null;//print statement prints "null" for s2 but s2.length() gives exception 

그것은 무엇을 의미 하는가 :

이 내가 가진 무엇인가? 제로가 아닌,하지만 말 그대로 값은 - - 개체 변수가 처음에 자바 같은 언어에서 사용되는

+5

이 질문이 전에 (잘 대답) : http://stackoverflow.com/questions/4802015/difference-between-null-and-java-string – Eric

+0

@Eric 그것은 비슷한 질문이지만 내 의도는 왜 s1.length()가 0을 반환하고 s2.length()가 예외를 발생시키는지를 아는 것입니다.하지만 어쨌든 덕분에 당신이 링크 한 페이지에서 더 자세한 정보를 얻을 수 있습니다 .. –

답변

46

String s1 = "";은 빈 Strings1에 할당됨을 의미합니다. 이 경우 s1.length()"".length()과 같으며 예상대로 0이됩니다.

String s2 = null;은 (null) 또는 "전혀 값 없음"이 s2에 할당됨을 의미합니다. 그래서 이것은 s2.length()null.length()과 동일합니다. 이는 null에서 자바의 메소드 (포인터)를 호출 할 수 없으므로 NullPointerException이됩니다. 로 말했다

String s1 = null; 

String s1 = ""; 

반면, 다른 일을 :로도

, 지점, 문

String s1; 

사실 같은 효과를가집니다.

1

, 그들은 모두 전혀 가치가 없습니다 즉, 예를 들어 null

없습니다 : String s;

당신이 있다면 s을 사용하려면 실제로는 null의 값을 가지며, 이는 절대 값을 보유하지 않기 때문입니다.

그러나 빈 문자열은 값이며 문자가없는 문자열입니다. 그것이 기본 '값'이다 (느슨하게 용어를 사용하는) 자바가 초기화되지 않은 개체 변수에 할당 -

String s; //Inits to null 
String a =""; //A blank string 

Null은 '아무것도'본질적으로 없다.

Null은 실제로 값이 아니며 속성이 없습니다. 따라서 값을 반환하려는 모든 것을 호출하면 (예 : .length()) '아무것도'속성을 가질 수 없으므로 항상 오류가 반환됩니다.

s1 = "";을 만들면 속성을 가질 수있는 객체를 초기화하고 메모리의 관련 공간을 차지합니다. s2;을 사용하면 해당 변수 이름을 String으로 지정하지만 실제로 해당 값을 지정하지는 않습니다.

+2

이 설명은 정말로 망가졌습니다. 값의 형태는 null는 될 수 없습니다. – carlosdc

+0

@carlosdc 당신은 더 자세히 설명 할 수 있습니까? 값 유형을 null로 설정할 수 없다는 것은 무엇을 의미합니까? – Singular1ty

+0

try int i = null; 자바에서. – carlosdc

1

NULL 값이 할당 된 개체에서 메서드를 호출 할 수 없습니다. nullPointerException가 발생합니다. 따라서 s2.length()가 예외를 제공합니다.

7

Null은 아무런 의미가 없습니다.그저 문자 그대로입니다. Null은 참조 변수의 값입니다. 그러나 빈 문자열은 비어 있습니다. length=0을 제공합니다. 빈 문자열은 공백 값입니다. 문자열에 아무 것도없는 것을 의미합니다.