如何防止数组的值发生变化

时间:2014-11-11 22:31:57

标签: java arrays static multidimensional-array

在我的程序中,我声明一个静态的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的值改变是否有办法处理这个?我是否必须在静态方法中删除静态变量?

4 个答案:

答案 0 :(得分:1)

您必须创建阵列的深层副本。您可以手动执行或使用System.arraycopy()来满足您的需求。

答案 1 :(得分:1)

数组是可变的,因此您需要使用System.arraycopy来制作防御性副本。将数组设为私有并调用一个公共方法,该方法可以通过共享引用来防止错误的发生。

答案 2 :(得分:1)

深层复制原始版本并保留这两个阵列中的一个(仅对其中一个进行更改

答案 3 :(得分:1)

尝试:

int[][] newArray = Arrays.copyOf(myArray, myArray.length)