String은 Java에서 불변이므로, 왜 argument-less String 생성자를 사용하여 객체를 만들고 싶습니까?자바에서는 String s = new String()을 사용합니까?
어떻게 할 후 나에게 유용한 변수 s
입니다 :
String s = new String();
String은 Java에서 불변이므로, 왜 argument-less String 생성자를 사용하여 객체를 만들고 싶습니까?자바에서는 String s = new String()을 사용합니까?
어떻게 할 후 나에게 유용한 변수 s
입니다 :
String s = new String();
new String()
은 빈 문자열입니다. 이것은 반환 할 값이 될 수 있습니다. 예를 들어 반환 할 흥미로운 것이없는 경우입니다. 리터럴 ""
을 사용하면 리터럴 빈 문자열 값이 이미 인턴되기 때문에 아마 더 좋습니다.
빈 문자열이며 ""
과 같습니다. javadoc에서 :
새로 만든 String 객체를 초기화하여 빈 문자 시퀀스를 나타냅니다. Strings는 불변이므로,이 생성자의 사용은 불필요합니다.
편집 : 단어 해당의 사용
빈약 한 선택. 모두를 명확히하려면 true
다음과 같습니다 왜 인수 적은 문자열 생성자를 사용하여 객체를 생성 할 것이다, 문자열 이후
"" == ""
"" != new String()
"".equals(new String())
자바에서 불변? 당신 이
""
에equal
하지만 동일하지 않았다 문자열을 만들 수를 원한다면
유일한 이유는 것입니다. 그리고 심지어 그럴 경우 new String(str)
을 str
이라고 부르는 것이 빈 문자열을 참조 할 가능성이 더 높습니다.
생성자가 제공되는 실제 이유는 완전히 명확하지 않습니다. 그러나 아무런 해가 없으며 처음에는 Java를 Java로 부르기 전에 어떤 이유가있을 수 있습니다.
흥미로운 사실 : .NET에는이 형식이 없습니다 (arg 인수가없는 String 생성자) –
@pst - 흥미로운 질문이라면 흥미 롭습니다. 내 생각에, 쓸모없는 메소드/생성자의 존재 여부는 실용적인 관점과 관련이 없다. –
@StephenC : 쓸데없는 방법이나 생성자가 산만하다는 것을 알았습니다. 새로운 API를 볼 때 가능한 한 간단하게하고 싶습니다. 쓸데없는 방법은 내가 더 많은 문서를 읽게하고, 나는 그들을 사용하지 않기로 결정해야한다. –
"equivalent"... "identical"입니까? 'new String() == ""'? –
@pst'new String() == ""'거짓입니다. 이들은 String Object가 인턴 풀에서 오지 않았기 때문에 같은 Object를 나타내지 않습니다. – Jivings