2012-03-10 11 views

cevap

7

new String() boş bir dizedir. Bu, bir yönteme göre bir geri dönüş değeri olabilir, örneğin, geri dönmek için daha ilginç bir şeyiniz yoksa. Literal boş dize değeri zaten dahil edileceğinden, literal "" kullanmak muhtemelen daha iyidir.

4

""'a eşdeğer boş bir dize. Javadoc:

Yeni oluşturulmuş bir String nesnesini, boş bir karakter dizisini temsil edecek şekilde başlatır. Dizeler değişmez olduğundan bu kurucunun kullanılmasının gereksiz olduğunu unutmayın.

DÜZENLEME: kelime eşdeğer kullanımının

kötü bir seçim. Tüm netleştirmek için true şunlardır: neden argüman daha az dize kurucu ve bir nesne oluşturmak isteyeyim, dizeleri yana

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

"Eşdeğer" ... ama "özdeş"? 'yeni String() ==" "'? –

+0

@pst 'new String() ==" "' false olacak. Dize Nesnesi intern havuzundan gelmediği için aynı Nesneyi temsil etmezler. – Jivings

3

Java iletmenin? Eğer "" için equal ama buna özdeş olmayan bir dize oluşturmak için isterse

tek nedeni olacaktır. Ve o zaman bile new String(str)'u arayarak str'un boş bir dizeye başvurması daha olasıdır.

Kurucunun tamamen sağlanmış olmasının asıl nedeni tamamen açık değildir. Bununla birlikte, hiçbir zararı yoktur ve başlangıçta buna sahip olmanın bir nedeni olabilir (Java'ya Java denir).

+0

İlginç bilgiler: .NET bu formda (no-arg String kurucu) –

+0

@pst - bu ilginç bir soru olduğunu düşünüyorsanız sadece ilginç. Benim görüşüm, çoğunlukla işe yaramaz bir yöntemin/yapıcının varlığı (veya değil) pratik bir bakış açısıyla ilgisiz olmasıdır. –

+0

@StephenC: İşe yaramaz yöntemleri ya da kurucuları dikkat dağıtıcı buluyorum. Yeni bir API gördüğümde mümkün olduğunca basit olmasını istiyorum. Yararsız yöntemler daha fazla doküman okumamı sağlıyor ve onları kullanmamaya * karar vermem gerekiyor. –

İlgili konular