SORU
6 Aralık 2009, Pazar


Ne zaman Dize sabitleri üzerinde Dize stajyer yöntemi kullanalım

Göre String#intern(), intern yöntem için gerekiyor dönüş Dize Dize havuzu eğer String bulunursa Dize havuzu, aksi takdirde yeni bir string nesnesi eklenecektir Dize havuzu ve başvuru bu Dize döndürülür.

Yani bu çalıştı:

String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();

if ( s1 == s2 ){
    System.out.println("s1 and s2 are same");  // 1.
}

if ( s1 == s3 ){
    System.out.println("s1 and s3 are same" );  // 2.
}

s1 and s3 are same s3 staj olarak Basılacak bekliyordum, ve s1 and s2 are same yazdırılır. Ama sonuç: Her iki satır yazdırılır. Bu, varsayılan olarak, Dize sabitleri staj yaptım. Ama eğer öyleyse, neden intern yöntem ihtiyacımız var mı? Kullansak da diğer bir deyişle zaman içinde bu yöntem?

CEVAP
6 Aralık 2009, Pazar


Java otomatik olarak String rakamları stajyerler. Bu == operatörü değer vermez ya da diğer ilkel değerleri için aynı şekilde Dizeleri için çalışma gibi görünüyor birçok durumda anlamına gelir.

Staj Dize hazır otomatik olduğu için, intern() yöntemi Dizeleri new String() ile inşa kullanılacak

Örnek kullanımı:

String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
String s4 = new String("Rakesh");
String s5 = new String("Rakesh").intern();

if ( s1 == s2 ){
    System.out.println("s1 and s2 are same");  // 1.
}

if ( s1 == s3 ){
    System.out.println("s1 and s3 are same" );  // 2.
}

if ( s1 == s4 ){
    System.out.println("s1 and s4 are same" );  // 3.
}

if ( s1 == s5 ){
    System.out.println("s1 and s5 are same" );  // 4.
}

döndürür:

s1 and s2 are same
s1 and s3 are same
s1 and s5 are same

Daha fazla bilgi için JavaTechniques "String Equality and Interning" bakın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • kylediablo

    kylediablo

    8 Ocak 2007
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007