Integer'ın (ve Float, Short gibi diğer inancının) basit bir örnek kodla değiştirilemez olduğunu netleştirebilirim:
Basit kod
public class Test{
public static void main(String... args){
Integer i = 100;
StringBuilder sb = new StringBuilder("Hi");
Test c = new Test();
c.doInteger(i);
c.doStringBuilder(sb);
System.out.println(sb.append(i));
}
private void doInteger(Integer i){
i=1000;
}
private void doStringBuilder(StringBuilder sb){
sb.append(" there");
}
}
Gerçek sonuç
Sonuç beklenen sonuç yerine Hi There 100'e gelir (hem sb hem de i değişken nesneler olması durumunda) Hi There 1000
Bu, temelde i tarafından oluşturulan nesnenin değiştirilmediğini, sb'nin değiştirildiğini gösterir.
Dolayısıyla StringBuilder değişebilir davranış gösterdi ancak Tamsayı göstermedi.
Yani Tamsayı Değişmezdir. Dolayısıyla Kanıtlandı
Yalnızca Tamsayı olmayan başka bir kod:
public class Test{
public static void main(String... args){
Integer i = 100;
Test c = new Test();
c.doInteger(i);
System.out.println(i);
}
private void doInteger(Integer i){
i=1000;
}
}