背景
包装类变量赋值并不是修改原对象的值,而是会新创建对象实例,并重新把新创建对象的地址赋值给变量。
实例
Integer value = Integer.valueOf(10);
value = 20;
看上去好像是给Integer变量赋值,再查看一下字节码。
BIPUSH 20
INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;
ASTORE 3
发现实际上是利用了包装类的valueOf方法为包装类新创建了实例对象并重新给变量赋值这里实例对象的地址。