xy2*_*254 2 java arrays boolean
如果我想声明一个布尔数组,我曾经这样做:
boolean[] B = new boolean[n];
Run Code Online (Sandbox Code Playgroud)
数组中的所有元素都是false
为什么不能这样做?
Boolean[] B = new Boolean[n];
Run Code Online (Sandbox Code Playgroud)
我知道boolean是原始类型,而Boolean是它的包装类.为什么它不像你声明ArrayList,在这里你使用包装类而不是原始类?
区别
阿Boolean[]是数组引用到Boolean对象.这意味着索引i将始终是以下之一
array[i] == null
array[i] == Boolean.TRUE
array[i] == Boolean.FALSE
Run Code Online (Sandbox Code Playgroud)
boolean[]另一方面,A 是一个基元数组,这意味着你将永远拥有一个基元
array[i] == true
array[i] == false
Run Code Online (Sandbox Code Playgroud)
比较 ArrayList<Boolean>
为什么它不像你声明ArrayList,在这里你使用包装类而不是原始类?
这是因为泛型不是为处理原语而设计的,所以你不得不使用盒装版本.
这可能会在将来的Java版本中发生变化.以下是Brian Goetz关于这个主题的文章:
也可以看看:
声明数组与声明ArrayList. 将ArrayList被假定为包含对象,而该阵列可以含有原语或(引用)对象。
此外,声明基元数组和包装器类型之间也存在差异。
当您声明数组时:
boolean[] B = new boolean[n];
Run Code Online (Sandbox Code Playgroud)
所有元素都将默认为false.
但是,当您使用以下命令声明数组时:
Boolean[] B = new Boolean[n];
Run Code Online (Sandbox Code Playgroud)
所有元素都将默认为null.