Saya dapat menjelaskan bahwa Integer (dan kredo lainnya seperti Float, Short dll) tidak dapat diubah dengan kode contoh sederhana:
Kode sampel
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)); //Expected result if Integer is mutable is Hi there 1000
}
private void doInteger(Integer i){
i=1000;
}
private void doStringBuilder(StringBuilder sb){
sb.append(" there");
}
}
Hasil Aktual
Hasilnya datang ke he Hi There 100 bukannya hasil yang diharapkan (dalam kasus sb dan saya menjadi objek yang bisa berubah) Hi There 1000
Ini menunjukkan bahwa objek yang dibuat oleh i di main tidak dimodifikasi, sedangkan sb dimodifikasi.
Jadi StringBuilder mendemonstrasikan perilaku yang bisa berubah tetapi bukan Integer.
Jadi Integer Tidak Berubah. Oleh karena itu Terbukti
Kode lain tanpa hanya Integer:
public class Test{
public static void main(String... args){
Integer i = 100;
Test c = new Test();
c.doInteger(i);
System.out.println(i); //Expected result is 1000 in case Integer is mutable
}
private void doInteger(Integer i){
i=1000;
}
}