Integer (및 Float, Short 등과 같은 다른 신조)는 간단한 샘플 코드로 변경할 수 없음을 분명히 할 수 있습니다.
샘플 코드
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");
}
}
실제 결과
결과는 예상 된 결과 대신 Hi There 100 (sb와 i가 모두 변경 가능한 객체 인 경우) Hi There 1000
이것은 main에서 i에 의해 생성 된 객체가 수정되지 않은 반면 sb는 수정되었음을 보여줍니다.
그래서 StringBuilder는 Integer가 아닌 가변 동작을 보여주었습니다.
따라서 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;
}
}