我试过移动一个数组,但我遇到了问题。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