我試過移動一個數組,但我遇到了問題。Java陣列移位引用
代碼到陣列偏移如下:
for(int i = (size - 1); i >= 0; i--)
{
data2[i+1] = data2[i];
}
陣列的init(從另一陣列複製)
obj[] data = new obj[size];
obj[] data2 = new obj[size + 1];
for(int i = 1; i <= size; i++)
{
data2[i] = data[i-1];
}
data2[0] = data[0];
例如,如果尺寸= 3,我只要操縱和使用數據[1] - >數據[3]。但是,如果數據[0]的數據改變,則數據[1]的數據也改變。這是什麼原因?
例如:
數據2 [0]:6 ---- 1 ---- 0 ---- 0
數據2 [1]:6 ---- 1 ---- 0 ---- 0
數據2 [2]:4 ---- 8 ---- 0 ---- 0
數據2 [3]:9 --- -5 ---- 0 ---- 0
data2[0].setElementTwo(3);
數據2 [0]:6 ---- ---- 3 0 ---- 0
數據2 [1]:6 ---- ---- 3 0 --- -0
數據2 [2]:4 ---- 8 ---- 0 ---- 0
數據2 [3]:9 ---- ---- 5 0- --- 0
我正在複製第一個數組到第二個數據,因爲數據[]是在另一個類中產生的,從0-> size,而我需要1-> size + 1的這部分該程序。
-edit爲clarity-
充滿僞代碼:
obj[] data = new obj[size];
obj[] data2 = new obj[size + 1];
for(int i = (size - 1); i >= 0; i--)
{
data2[i+1] = data2[i];
}
for(int i = 1; i <= size; i++)
{
data2[i] = data[i-1];
}
data2[0] = data[0];
// print data2 0->3
// change data2[0] value
// print data2 0->3, values would have changed for data[0] and data[1]
// but I only want to change values for data[0] and not data[1]
不清楚大部分這些變量都被初始化爲與其中代碼序列被操縱。還要明確指出你想要達到的目標。 – nullpointer