什么是;新布尔值[0]”;或;新字符串[0]”;在Java中计算
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])时,您正在分配一个新数组,然后在
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()])