Java'da "" şeklinde verilen String'ler bir havuzda tutulur. Başka bir yerde "" ile aynı String tanımlanırsa bu havuzdaki String kullanılır.
Java'da
String s="Ali";
şeklinde bir String tanımlandığında "Ali" ifadesi String havuzunda saklanmaktadır. Bu nedenle aşağıdaki gibi bir karşılaştırma true sonucu verir. Çünkü havuzda aynı String'e karşılık gelmektedir:
public class StringPoolTest {
public static void main(String[] args) {
String a="Ali";
String b="Ali";
if(a==b) {
System.out.println("true");
}else {
System.out.println("false");
}
}
}
Uygulamayı çalıştırdığınızda çıktıya true yazacaktır. Ancak ikinci String "" ile değil de new String("Ali") ile yaratsaydık bu String havuzda olmayacaktır ve false cevabı alınacaktı. Aşağıdaki örnek false sonucu verecektir:
public class StringPoolInternTest {
public static void main(String[] args) {
String a="Ali";
String b=new String("Ali");
if(a==b) {
System.out.println("true");
}else {
System.out.println("false");
}
}
}
Eğer bir String nesnesinin String'ini havuza eklenmesi isteniyorsa intern() yöntemi kullanılır. Bu yöntem geriye havuza eklenmiş String verir:
public class StringPoolInternTest {
public static void main(String[] args) {
String a="Ali";
String b=new String("Ali");
if(a==b) {
System.out.println("true");
}else {
System.out.println("false");
}
b=b.intern();
if(a==b) {
System.out.println("true");
}else {
System.out.println("false");
}
}
}
Uygulama çalıştığında ilk olarak false yazar. Ancak intern() yöntemi çağrıldıktan nsonra kontrol edildiğinde true sonucu basar.