在我的程序中,我声明一个静态的int 2D数组并将其设置为等于某些值。在另一种方法中,我创建一个局部变量并将其分配给我创建的2D数组。我对局部变量进行了一些更改,但是我不希望我的2D数组中的初始值发生变化。 我使用静态的原因是因为我使用的是静态main方法,并且我认为所有其他方法和变量也必须是静态的。
这是我正在做的事情的简单布局
public static int[][] myArray = {{1,2},{3,4}};
public static void main(String args[]){
doSomething();
}
public static void doSomething(){
int[][] newArray = myArray;
//do Something to newArray
}
我不希望myArray的值改变是否有办法处理这个?我是否必须在静态方法中删除静态变量?
答案 0 :(得分:1)
您必须创建阵列的深层副本。您可以手动执行或使用System.arraycopy()来满足您的需求。
答案 1 :(得分:1)
数组是可变的,因此您需要使用System.arraycopy来制作防御性副本。将数组设为私有并调用一个公共方法,该方法可以通过共享引用来防止错误的发生。
答案 2 :(得分:1)
深层复制原始版本并保留这两个阵列中的一个(仅对其中一个进行更改
答案 3 :(得分:1)
尝试:
int[][] newArray = Arrays.copyOf(myArray, myArray.length)