2012-05-31 23 views
5

Olası Çoğalt:
What is the purpose of the expression “new String(…)” in Java?Dize s = yeni Dize ("Hello World") ne zaman kullanmalıyım?

ben çoğu durumda gereksizdir "Merhaba Dünya" için ekstra alan yaratacak şekilde String s = new String("Hello World") kaçınılmalıdır biliyoruz.

What is the difference between "text" and new String("text")?

Ama biz String s = new String("Hello World") yerine String s = "Hello World" kullanmam gerekiyor ne zaman:

String s = new String("Hello World") kaçınılmalıdır nedenini açıklayan

İlgili soru burada? Bu yaşadığım bir röportaj sorusudur.

Çoğu durumda, String s = new String("Hello World") kaçınılmalıdır, neden Java hala buna izin veriyor?

+0

aynı soruyu '(doğru) yeni Boolean' Yapabileceğiniz 'Boolean.TRUE' için de geçerlidir. – Thilo

+0

Java'nın * yazmayı * engellemesini beklemeyeceğiniz çok sayıda önemsiz kod parçası vardır. int a = 5 + 1 - 1; 'aptalca, fakat yasaldır. –

+1

@Damien_The_Unbeliever: Bu özel örnek derleyici tarafından halledilirken ('yeni String ("s");) değil. – Thilo

cevap

1

1) Dize s = "metin"; Bu sözdizimi, yığın içinde "metin" için bellek ayıracaktır. ve bu "metni" diğer değişkene atayacağınız her seferinde, her seferinde aynı bellek referansını döndürecektir. Exp için - yazdırır

String aa = "text"; 
    String bb = "text"; 

    if(aa == bb){ 
     System.out.println("yes"); 
    } else { 
     System.out.println("No"); 
    } 

- Evet

ama
String s = new String ("metin"); Her zaman belleğe yeni bir konum oluşturun ve her seferinde yeni bir referans döndürür. Exp için -

String aa = new String ("text"); 
    String bb = new String ("text"); 

    if(aa == bb){ 
     System.out.println("yes"); 
    } else { 
     System.out.println("No"); 
    } 

yazdırır - Hayır

+0

Üzgünüm, ne zaman yeni bir dize kullanmam gerektiğine dair spesifik bir örnek verebilir misin? Arkasındaki teoriyi biliyorum, sadece örnek yok –

İlgili konular