Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;新布尔值[0]”;或;新字符串[0]”;在Java中计算_Java_Arrays_Toarray - Fatal编程技术网

什么是;新布尔值[0]”;或;新字符串[0]”;在Java中计算

什么是;新布尔值[0]”;或;新字符串[0]”;在Java中计算,java,arrays,toarray,Java,Arrays,Toarray,Java中的new Boolean[0]或new String[0]的计算结果是什么 为什么我们需要一个号码 以下哪项是正确的方法 myList.toArray(new Boolean[0]) 或 表达式new Boolean[0]为长度为0的新数组对象分配内存 调用myList.toArray(…)时,toArray()方法将首先检查您提供的数组是否足够大。如果不是,那么该方法将分配一个足够大的新数组 因此,当您调用myList.toArray(新布尔[0])时,您正在分配一个新数组,然后在

Java中的
new Boolean[0]
new String[0]
的计算结果是什么

为什么我们需要一个号码

以下哪项是正确的方法

myList.toArray(new Boolean[0])


表达式
new Boolean[0]
为长度为0的新数组对象分配内存

调用
myList.toArray(…)
时,
toArray()
方法将首先检查您提供的数组是否足够大。如果不是,那么该方法将分配一个足够大的新数组

因此,当您调用myList.toArray(新布尔[0])时,您正在分配一个新数组,然后在分配另一个新数组之后,垃圾收集器可以立即释放第一个(无用的)数组


调用
myList.toArray(新布尔值[myList.size()])
时,分配一个必要大小的数组,然后填充它。这在内存使用和CPU时间方面都更有效。我总是在方便的时候使用这种模式。

表达式
新布尔[0]
为长度为0的新数组对象分配内存

调用
myList.toArray(…)
时,
toArray()
方法将首先检查您提供的数组是否足够大。如果不是,那么该方法将分配一个足够大的新数组

因此,当您调用myList.toArray(新布尔[0])时,您正在分配一个新数组,然后在分配另一个新数组之后,垃圾收集器可以立即释放第一个(无用的)数组


调用
myList.toArray(新布尔值[myList.size()])
时,分配一个必要大小的数组,然后填充它。这在内存使用和CPU时间方面都更有效。我总是在方便的时候使用这种模式。

引用JetBrains IntelliJ IDEA检查工具提示:

将集合转换为数组有两种样式:使用 预先调整大小的数组(如c.toArray(新字符串[c.size()])或 使用空数组(如c.toArray(新字符串[0])。In 建议使用预大小数组的旧Java版本,因为 反射调用,这是创建适当大小的数组所必需的 非常慢。但是由于OpenJDK 6的更新很晚,这个调用 被内部化,使得空数组版本的性能 同样的,有时甚至更好,相比预大小 同时,传递预大小的数组对于并发或 可以将同步收集作为数据竞争在 大小和toArray调用,这可能会导致额外的空值 在数组末尾,如果集合同时收缩 在操作过程中。

此检查允许遵循 统一样式:使用空数组(建议在 或者使用预先调整大小的数组(在 较旧的Java版本或非基于热点的JVM)


引用JetBrains IntelliJ IDEA检查工具提示:

将集合转换为数组有两种样式:使用 预先调整大小的数组(如c.toArray(新字符串[c.size()])或 使用空数组(如c.toArray(新字符串[0])。In 建议使用预大小数组的旧Java版本,因为 反射调用,这是创建适当大小的数组所必需的 非常慢。但是由于OpenJDK 6的更新很晚,这个调用 被内部化,使得空数组版本的性能 同样的,有时甚至更好,相比预大小 同时,传递预大小的数组对于并发或 可以将同步收集作为数据竞争在 大小和toArray调用,这可能会导致额外的空值 在数组末尾,如果集合同时收缩 在操作过程中。

此检查允许遵循 统一样式:使用空数组(建议在 或者使用预先调整大小的数组(在 较旧的Java版本或非基于热点的JVM)

数组大小
new Boolean[0]
创建一个零元素数组

反而

new Boolean[myList.size()]
创建一个与myList大小相同的数组

使用什么 在过去,您应该使用
new Boolean[myList.size()]
,因为这样效率更高

第一个选项意味着您要传递一个零大小的数组,为了创建一个新数组,该数组将被丢弃

然而,正如Eng.Fouad使用InteliJ文档所写的那样,在最新版本中,数组大小不再是这样
new Boolean[0]
创建一个零元素数组

反而

new Boolean[myList.size()]
创建一个与myList大小相同的数组

使用什么 在过去,您应该使用
new Boolean[myList.size()]
,因为这样效率更高

第一个选项意味着您要传递一个零大小的数组,为了创建一个新数组,该数组将被丢弃


然而,正如Eng.Fouad使用InteliJ文档所写的那样,在最新版本中,情况不再如此

分配正确大小的数组实际上并不一定更有效。当分配数组时,如果没有列出其初始元素,通常必须用默认值填充数组初始值,以防止在无效状态下看到它。如果创建数组的代码立即用其他值填充数组,而不在无效状态下访问数组,并且编译器可以证明它是这样做的,则可以优化使用默认初始值填充数组的第一阶段。T他在
toArray中编码
myList.toArray(new Boolean[myList.size()])