Предположим, у меня есть массив int, и я хочу его изменить. Я знаю, что я не могу назначить новый массив массиву, переданному как параметр:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 1
}
public static void method(int[] n)
{
n = new int[]{2};
}
, в то время как я могу его изменить:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 2
}
public static void method(int[] n)
{
n[0] = 2;
}
Затем я попытался назначить произвольный массив массиву, переданному как параметр, используя clone ()
:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]); // prints 1 ?!
}
public static void method(int[] n)
{
int[] temp = new int[]{2};
n = temp.clone();
}
Теперь мне интересно, почему он печатает 1 в последнем примере, когда я просто копирую массив с помощью clone ()
, который просто копирует значение, а не ссылку. Не могли бы вы объяснить мне это?
РЕДАКТИРОВАТЬ: Есть ли способ скопировать массив в объект без изменения ссылки? Я хочу сделать последний пример печати 2
.