w*********n 发帖数: 439 | 1 我初始化一个ArraList ,然后向这个ArrayList里面加入2个Integer,当我试
图改变其中一个Integer的值的时候,
居然改不掉。请问怎么回事?
ArrayList list = new ArrayList<>();
Integer age1 = 20;
Integer age2 = 20;
list.add(age1);
list.add(age2);
//change age2 int value to 30
age2 = 30;
System.out.println(list.get(0));
System.out.println(list.get(1));
————————————————————————————
Output:
20
20
请问为什么改不掉age2这个Integer的值。 |
d**********6 发帖数: 112 | 2 According to this post
http://stackoverflow.com/questions/3815173/increment-a-integers-int-value
Java Integer objects are immutable
【在 w*********n 的大作中提到】 : 我初始化一个ArraList ,然后向这个ArrayList里面加入2个Integer,当我试 : 图改变其中一个Integer的值的时候, : 居然改不掉。请问怎么回事? : ArrayList list = new ArrayList<>(); : Integer age1 = 20; : Integer age2 = 20; : list.add(age1); : list.add(age2); : //change age2 int value to 30 : age2 = 30;
|
e*******o 发帖数: 4654 | 3 age2已经改了 你直接print age2
但是你加入list的那个值是age2 的之前的value
【在 w*********n 的大作中提到】 : 我初始化一个ArraList ,然后向这个ArrayList里面加入2个Integer,当我试 : 图改变其中一个Integer的值的时候, : 居然改不掉。请问怎么回事? : ArrayList list = new ArrayList<>(); : Integer age1 = 20; : Integer age2 = 20; : list.add(age1); : list.add(age2); : //change age2 int value to 30 : age2 = 30;
|
D*****y 发帖数: 196 | 4 Integer is immutable. every time you reassign a value, jvm will just create
a new Integer object, which is not the same one referenced in the arrayList. |
o******y 发帖数: 44 | 5
你的age2和list[1]根本不是一个东西呀,age2改了,不影响list[1]。
【在 w*********n 的大作中提到】 : 我初始化一个ArraList ,然后向这个ArrayList里面加入2个Integer,当我试 : 图改变其中一个Integer的值的时候, : 居然改不掉。请问怎么回事? : ArrayList list = new ArrayList<>(); : Integer age1 = 20; : Integer age2 = 20; : list.add(age1); : list.add(age2); : //change age2 int value to 30 : age2 = 30;
|