如果我想声明一个 boolean 数组,我曾经这样做:
boolean[] B = new boolean[n];
数组中的所有元素都是 false
为什么不能这样做?
Boolean[] B = new Boolean[n];
我知道 boolean 是原始类型,而 Boolean 是它的包装类。为什么不像你声明ArrayList,这里使用包装类而不是原始类?
最佳答案
区别
一个Boolean[]
是 Boolean
的引用数组对象。这意味着索引 i
将始终是以下之一
array[i] == null
array[i] == Boolean.TRUE
array[i] == Boolean.FALSE
一个boolean[]
另一方面,是一个基元数组,这意味着您将始终拥有其中一个
array[i] == true
array[i] == false
与ArrayList<Boolean>
相比
Why it's not like you declare ArrayList, here you use wrapper class instead of primitive class?
这是因为泛型并不是为处理基元而设计的,因此您被迫使用盒装版本。
这可能会在 Java 的 future 版本中发生变化。以下是 Brian Goetz 关于该主题的文章:
另请参阅:
关于java - 使用 Boolean 或 boolean 声明数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153154/