Ваши примеры 1 и 3 практически совпадают в контексте вопроса - вы пытаетесь присвоить новое значение n
(которое является ссылкой на массив, переданный по значению).
Тот факт, что вы клонировали массив temp
, не имеет значения - все, что он сделал, это создал копию temp
и затем присвоил ее n
.
Чтобы скопировать значения в массив, переданный в ваш метод method
, вы можете посмотреть: System.arraycopy
Все это, конечно, зависит отразмеры вашего массива n
и того, который вы создаете в методе method
.
Если предположить, что они оба имеют одинаковую длину, например, вы бы сделали это так:
public static void main(String[] args)
{
int[] temp_array = {1};
method(temp_array);
System.out.println(temp_array[0]);
}
public static void method(int[] n)
{
int[] temp = new int[]{2};
System.arraycopy(temp, 0, n, 0, n.length);
// or System.arraycopy(temp, 0, n, 0, temp.length) -
// since we assumed that n and temp are of the same length
}