2012-03-10 3 views

답변

7

new String()은 빈 문자열입니다. 이것은 반환 할 값이 될 수 있습니다. 예를 들어 반환 할 흥미로운 것이없는 경우입니다. 리터럴 ""을 사용하면 리터럴 빈 문자열 값이 이미 인턴되기 때문에 아마 더 좋습니다.

4

빈 문자열이며 ""과 같습니다. javadoc에서 :

새로 만든 String 객체를 초기화하여 빈 문자 시퀀스를 나타냅니다. Strings는 불변이므로,이 생성자의 사용은 불필요합니다.

편집 : 단어 해당의 사용

빈약 한 선택. 모두를 명확히하려면 true 다음과 같습니다 왜 인수 적은 문자열 생성자를 사용하여 객체를 생성 할 것이다, 문자열 이후

"" == "" 
"" != new String() 
"".equals(new String()) 
+0

"equivalent"... "identical"입니까? 'new String() == ""'? –

+0

@pst'new String() == ""'거짓입니다. 이들은 String Object가 인턴 풀에서 오지 않았기 때문에 같은 Object를 나타내지 않습니다. – Jivings

3

자바에서 불변? 당신 ""equal하지만 동일하지 않았다 문자열을 만들 수를 원한다면

유일한 이유는 것입니다. 그리고 심지어 그럴 경우 new String(str)str이라고 부르는 것이 빈 문자열을 참조 할 가능성이 더 높습니다.

생성자가 제공되는 실제 이유는 완전히 명확하지 않습니다. 그러나 아무런 해가 없으며 처음에는 Java를 Java로 부르기 전에 어떤 이유가있을 수 있습니다.

+0

흥미로운 사실 ​​: .NET에는이 형식이 없습니다 (arg 인수가없는 String 생성자) –

+0

@pst - 흥미로운 질문이라면 흥미 롭습니다. 내 생각에, 쓸모없는 메소드/생성자의 존재 여부는 실용적인 관점과 관련이 없다. –

+0

@StephenC : 쓸데없는 방법이나 생성자가 산만하다는 것을 알았습니다. 새로운 API를 볼 때 가능한 한 간단하게하고 싶습니다. 쓸데없는 방법은 내가 더 많은 문서를 읽게하고, 나는 그들을 사용하지 않기로 결정해야한다. –

관련 문제