使用布尔值或布尔值声明数组
declare array using Boolean or boolean
如果我想声明一个布尔数组,我曾经这样做过:
boolean[] B = new boolean[n];
数组中的所有元素都是假的
为什么不能这样做?
Boolean[] B = new Boolean[n];
我知道 boolean 是原始类型,而 Boolean 是它的包装器 class。为什么不像你声明的ArrayList,这里你使用wrapper class而不是primitive class?
声明数组不同于声明ArrayList
。 ArrayList
应该 包含对象,而数组可以包含原语 或 (引用)对象。
此外,声明基元数组和包装器类型之间存在差异。
当您声明数组时:
boolean[] B = new boolean[n];
所有元素将默认为 false
。
但是,当您声明数组时:
Boolean[] B = new Boolean[n];
所有元素将默认为 null
。
区别
A 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 的未来版本中发生变化。这是 Brian Goetz 关于该主题的文章:
另请参阅:
- Boolean vs boolean in Java
- Why do people still use primitive types in Java?
如果我想声明一个布尔数组,我曾经这样做过:
boolean[] B = new boolean[n];
数组中的所有元素都是假的
为什么不能这样做?
Boolean[] B = new Boolean[n];
我知道 boolean 是原始类型,而 Boolean 是它的包装器 class。为什么不像你声明的ArrayList,这里你使用wrapper class而不是primitive class?
声明数组不同于声明ArrayList
。 ArrayList
应该 包含对象,而数组可以包含原语 或 (引用)对象。
此外,声明基元数组和包装器类型之间存在差异。
当您声明数组时:
boolean[] B = new boolean[n];
所有元素将默认为 false
。
但是,当您声明数组时:
Boolean[] B = new Boolean[n];
所有元素将默认为 null
。
区别
A 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 的未来版本中发生变化。这是 Brian Goetz 关于该主题的文章:
另请参阅:
- Boolean vs boolean in Java
- Why do people still use primitive types in Java?