【发布时间】:2019-04-16 11:24:59
【问题描述】:
当使用ar.toArray(new String[ar.size()])Android studio 3.2.1 警告预先设定的数组并建议使用空数组:
将集合转换为数组有两种样式:使用 预先确定大小的数组(如 c.toArray(new String[c.size()]))或使用 空数组(如 c.toArray(new String[0])。在较旧的 Java 版本中 建议使用预先确定大小的数组,因为反射调用是 创建适当大小的数组所必需的速度非常慢。然而 由于 OpenJDK 6 的更新较晚,因此该调用被内化,使得 空数组版本的性能相同,有时甚至 更好,与预先调整大小的版本相比。也通过了预尺寸 数组对于并发或同步集合是危险的 size 和 toArray 调用之间可能存在数据竞争,这可能 如果集合是 在操作过程中同时收缩。这种检查允许 遵循统一风格:要么使用空数组(即 在现代 Java 中推荐)或使用预先确定大小的数组(可能是 在较旧的 Java 版本或非基于 HotSpot 的 JVM 中速度更快)。
Android 是这样还是只适用于 java?
使用预先确定大小的数组(在旧 Java 版本中可能会更快) 或非基于 HotSpot 的 JVM)。
因为我认为 Android 不是 HotSpot,所以它的虚拟机是 Dalvik,现在是 ART
【问题讨论】:
标签: java android arrays virtual-machine dalvik