每个循环的Java迭代布尔数组

Ten*_*eff 1 java arrays for-loop

我有一个布尔数组

boolean[] test = {
    false,
    true,
    true,
    false,
    true
};
Run Code Online (Sandbox Code Playgroud)

我试图用"for-each"语句翻转(true到false,false为true),如下所示:

for(boolean x : test) {
    x = !x;
}
Run Code Online (Sandbox Code Playgroud)

但它只是改变x了局部范围内的变量.

我是Java的新手,我想问一下如何做到这一点,以及这是否是正确的方法.我搜索了很多,但大多数示例都用于从数组中收集数据而不进行修改.

Jon*_*eet 9

不,那不是正确的方法.增强的for循环不允许您更改迭代的值.要反转数组,您需要使用常规for循环:

for (int i = 0; i < test.length; i++) {
    test[i] = !test[i];
}
Run Code Online (Sandbox Code Playgroud)

(请注意,增强的for循环将允许您更改任何数组元素所引用的对象(如果它们是类) - 但这与更改元素本身的值不同.)