Java中的变量浅拷贝整数
其他答案不适合我。我的问题是关于整数的
Integer i1 = new Integer(11);
Integer i2 ;
i2 = i1;
System.out.println(i1+" "+i2);
i1 = 233;
System.out.println(i1+" "+i2);
//~ 11 11
//~ 233 11
我想让i1和i2相关
你可以在下面搜索框中键入要查询的问题!
其他答案不适合我。我的问题是关于整数的
Integer i1 = new Integer(11);
Integer i2 ;
i2 = i1;
System.out.println(i1+" "+i2);
i1 = 233;
System.out.println(i1+" "+i2);
//~ 11 11
//~ 233 11
我想让i1和i2相关
# 1 楼答案
Java总是在分配新整数文本时创建新对象,因为整数是不可变的
例如:
现在
i1
和i2
作为两个不同的物理地址# 2 楼答案
在java中,{}是不可变的。这意味着您不能更改Integer对象的值(以通常的方式)。可以使用新值创建新的
Integer
实例i1
和i2
包含对同一Integer
实例的引用。当你这意味着
i1
引用了Integer
类的另一个实例如果你想让
i1
和i2
引用同一个实例,你可以使用AtomicInteger
,但是AtomicInteger
是为了不同的目的而做的或者你可以做一个包装
和代码
# 3 楼答案
自动装箱在这里起作用。当你指派
它实际上读作
现在再次阅读代码。i2整数仍然指向包含11的对象,其中as i1指向包含233的新对象
# 4 楼答案
执行此操作时:
i2 = x;
java会自动为您执行i2 = new Integer(x);
,因为Integer
是不可变的。其中x=(任意整数文字)# 5 楼答案
这里的问题是
i1 = 233
更改了i1
引用的内存地址