为了说明“更改引用”和“更改成员的引用值”的问题,我尝试使用自定义类进行操作,并在此处发布我所尝试的内容和观察结果 - 感谢 @SteveP。
//情况1 尝试更改引用
Boolean[] array1 = new Boolean[5];
Arrays.fill(array1, Boolean.FALSE);
for(Boolean value : array1) { // Warning here The value of the local variable value is not used
value = Boolean.TRUE;
}
System.out.println(" Elements ==> "+array1[0]+" - "+array1[1]);
这将打印出元素 ==> false - false ,引用将无法修改
情况2 尝试使用用户定义的类更改引用
MyBool[] array3 = new MyBool[5];
MyBool boolInst2=new MyBool( Boolean.FALSE);
MyBool boolNew=new MyBool( Boolean.TRUE);
Arrays.fill(array3,boolInst2 );
for(MyBool value : array3) {
value = boolNew;
}
System.out.println(" Elements ==> "+array3[0].flag+" - "+array3[1].flag);
这将打印出元素 ==> false - false,引用将无法修改
情况3 改变对象成员的值(MyBool.value),
MyBool[] array2 = new MyBool[5];
MyBool boolInst=new MyBool( Boolean.FALSE);
Arrays.fill(array2,boolInst );
for(MyBool value : array2) {
value.flag = Boolean.TRUE;
}
System.out.println(" Elements ==> "+array2[0].flag+" - "+array2[2].flag);
这将打印出元素 ==> true - true ,值已更新
class MyBool{
public Boolean flag;
public MyBool(Boolean flag){
this.flag=flag;
}
}