我有一段代碼給了我一個意想不到的輸出。我相信這與存儲空間有關,正如我在下面所描述的那樣。但我很不確定。變量被覆蓋
代碼:
public static void main(String[] args) {
int [] x = {1,2};
int [] y = plusOne(x);
System.out.println(x[0] + " " + x[1]);
System.out.println(y[0] + " " + y[1]);
}
public static int [] plusOne(int [] x) {
System.out.println("x :"+ x);
int [] y = x;//1 2
x = new int [x.length];
System.out.println("y: "+y);
for (int i=0; i<y.length;i++){
x[i] = y[i];
}
for (int i=0; i<y.length;i++){
y[i] = y[i] + 1;
}
return y;
}
預期輸出:
1 2
2 3
實際輸出:
2 3
2 3
從我目前掌握的發現是,分配兩個整數的時候。即int x = y,這會導致x的存儲位置被分配給y的存儲位置,因爲它們沒有正確初始化。但我不是100%肯定的,我在這裏寫的是我能找到的。
在代碼'刪除這些線(INT I = 0;我