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
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.
Nasıl Bash ayırıcı üzerinde bir dize b...
Neden't ben bir Dize üzerinde geç...
Kolay yeni satır üzerinde bir dize böl...
Nasıl değişmez bir " baskı miyim;{}&qu...
Nasıl bir dize olarak yöntem adı veril...