java - 使用 Boolean 或 boolean 声明数组

标签 java arrays boolean

如果我想声明一个 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 关于该主题的文章:

     State of the Specialization

另请参阅:

关于java - 使用 Boolean 或 boolean 声明数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153154/

相关文章:

php - 在 php 中将 1/0 值转换为 YES/NO

java - 为什么 'headlines.add(xpp.nextText());' 给我一个错误?

java - 如何根据条件更改 HttpServlet 的服务器/主机

java - 处理丢失的连接插入

java - Java 中的 Neo4j 服务器模式

java - 处理未定义大小的数组

dictionary - 如何设置像 “Map<String, bool>”这样的 map

java - JPanel 布局 - 添加文本框并重新排列组件

ios - 使用 UserDefaults 保存来自 plist 的字典数组

C、指针数组: int n[5], int *p[5],赋值p[i] = &n[i],为什么*p和p一样?