2014-11-11 3 views
0

В моей программе я объявляю статический int 2D-массив и устанавливаю его равным некоторым значениям. В другом методе я создаю локальную переменную и назначаю ее двумерному массиву, который я создал. Я вношу некоторые изменения в локальную переменную, однако я не хочу, чтобы мои начальные значения в моем 2D-массиве менялись. Причина, по которой я использую static, заключается в том, что я использую статический основной метод, и я решил, что все другие методы и переменные должны быть также статическими.Как предотвратить изменение значения массива

Вот простая схема, что я делаю

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 

} 

Я не хочу значения туАггау изменить это есть способ справиться с этим? Должен ли я избавиться от статической переменной в статическом методе?

+0

Вы должны глубокой копия всего массива в новый – Antoniossss

+0

@Antoniossss как бы я пошел, делая это – user3339242

ответ

1

Вам понадобится создать глубокую копию вашего массива. Вы можете сделать это вручную или использовать System.arraycopy() в соответствии с вашими потребностями.

+0

Вручную вы хотите просто создать этот новый массив и присвоить ему значение в старом массиве? – user3339242

+0

Да, это был бы один из способов сделать это. – Antoniossss

1

Массивы изменяемы, поэтому вам необходимо использовать System.arraycopy для создания защитных копий. Сделайте массив частным и вызовите общедоступный метод, который передает копию, чтобы предотвратить ошибки ошибок, разделив ссылку, когда вы этого не сделаете.

1

Deep копия оригинал один и держать одну из этих двух массивов (только внесение изменения в одном из них