Posso chiarire che Integer (e altri suoi credo come Float, Short ecc.) Sono immutabili con un semplice codice di esempio:
Codice di esempio
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");
}
}
Risultato attuale
Il risultato arriva a Hi There 100 invece del risultato atteso (nel caso in cui sia sb che io siano oggetti mutabili) Hi There 1000
Questo mostra che l'oggetto creato da i in main non è modificato, mentre sb è modificato.
Quindi StringBuilder ha dimostrato un comportamento mutevole ma non Integer.
Quindi Integer è immutabile. Quindi dimostrato
Un altro codice senza solo 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;
}
}