嗨,我讀了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') – lccarrasco
Integer在Java中是不可變的。 相似的主題:http://stackoverflow.com/questions/5560176/java-is-integer-immutable – Alex
@Alexey,那麼在這種情況下,考慮到Integer是不可變的,在'increaseObject'方法中發生了什麼? – rgamber