sag*_*e88 20 java arrays initialization
刚刚发现这个问题恰好通过初始化一个在java中初始化布尔数组的布尔数组来解决我的问题.然而,虽然它给了我可以工作的代码,但提问者并没有尝试我正在运行的代码,但是我实际上想知道为什么它不起作用.这是我尝试的代码:
Boolean[] array = new Boolean[5];
for(Boolean value : array) {
value = false;
}
Run Code Online (Sandbox Code Playgroud)
这是其他问题的功能代码:
Boolean[] array = new Boolean[5];
Arrays.fill(array, Boolean.FALSE);
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么for循环方法不起作用?
Ste*_* P. 18
Boolean[] array = new Boolean[5];
for(Boolean value : array) {
value = false;
}
Run Code Online (Sandbox Code Playgroud)
java增强for循环使用迭代器来遍历数组.迭代器返回对象的引用,但java按值传递引用,因此您无法更改引用指向的内容,这是您尝试执行的操作value = false.
编辑:
事实证明,对于一个普通的数组,而不是转换为List和使用迭代器,java执行以下操作:
for (int i = 0; i < array.length; i++)
{
Boolean value = array[i]; //here's how we get the value that's referred to
... //in the enchanced for loop
}
Run Code Online (Sandbox Code Playgroud)
虽然我们没有使用迭代器,但Java通过值传递引用的事实仍然解释了这里发生了什么.
编辑结束
如果这是具有某些实例成员的对象数组,则可以更改所述成员,但不能更改对象本身引用的内容.
正如其他人所建议的那样,为了解决这个问题,简单地使用常规for循环并手动将值分配给数组中的索引槽,即:
Boolean[] b_values = new Boolean[5];
for(int i = 0; i < b_values.length; i++)
{
b_values[i] = Boolean.FALSE;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8243 次 |
| 最近记录: |