boolean temp1,temp2;
temp1 = true;
temp2 = temp1;
Log.d("rvg", "temp1:"+temp1+" temp2:"+temp2);
temp1 = false;
Log.d("rvg", "temp1:"+temp1+" temp2:"+temp2);
Когда я выполнить это, я получилПрисвоить значение по умолчанию: Java
temp1:true temp2:true
temp1:false temp2:true
Но я изменился в массив
boolean[] Temp1,Temp2;
Temp1 = new boolean[1];
Temp2 = new boolean[1];
Temp1[0] = true;
Temp2 = Temp1;
Log.d("rvg", "Temp1:"+Temp1[0]+" Temp2:"+Temp2[0]);
Temp1[0] = false;
Log.d("rvg", "Temp1:"+Temp1[0]+" Temp2:"+Temp2[0]);
Когда я выполнить это, я получил такое же значение для Temp1 и Temp 2.
Temp1:true Temp2:true
Temp1:false Temp2:false
Что делать, чтобы избежать этого?
Используйте 'Temp2 [0] = Temp1 [0]; 'вместо' Temp2 = Temp1; ' – johnchen902
как насчет копирования значений из temp1 в temp2 путем итерации в цикле не непосредственно этим Temp2 [] = Temp1, который вызывает копирование по ссылке, поэтому вы неявно связываете их, что приводит к влиянию друг друга –