【发布时间】:2012-10-03 03:31:15
【问题描述】:
您好,我阅读了有关堆栈溢出的this 问题,并尝试做一个示例。
我有以下代码:
public static void main(String[] args){
int i = 5;
Integer I = new Integer(5);
increasePrimitive(i);
increaseObject(I);
System.out.println(i); //Prints 5 - correct
System.out.println(I); //Still prints 5
System.out.println(increaseObject2(I)); //Still prints 5
}
public static void increasePrimitive(int n){
n++;
}
public static void increaseObject(Integer n){
n++;
}
public static int increaseObject2(Integer n){
return n++;
}
increaseObject 打印 5 是因为引用的值在该函数内部发生了变化吗?我对吗?
我很困惑为什么 increasedObject2 打印 5 而不是 6。
谁能解释一下?
【问题讨论】:
-
您的意思是使用
increaseObject(I);吗? (注意I而不是i) -
整数在 Java 中是不可变的。相似主题:stackoverflow.com/questions/5560176/java-is-integer-immutable
-
@Alexey,那么在这种情况下,
increaseObject方法会发生什么,考虑到 Integer 是不可变的? -
你可以这样改变:n = n+1。这是完全相同的问题:stackoverflow.com/questions/2208943/…