gpt4 book ai didi

java - String.substring() 制作底层 char[] 值的副本

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:59 26 4
gpt4 key购买 nike

<分区>

关于 String.substring 性能考虑的问题。在 Java 1.7.0_06 之前,String.substring() 方法返回一个新的 String 对象,该对象与其父对象共享相同的底层 char 数组,但具有不同的偏移量和长度。为了避免在只需要保留一个小的子字符串时在内存中保留一个非常大的字符串,程序员习惯于编写如下代码:

s = new String(queryReturningHugeHugeString().substring(0,3));

从 1.7.0_06 开始,不再需要创建新的 String,因为在 Oracle 的 String 实现中,子字符串不再共享其底层 char 数组。

我的问题是:我们能否依赖 Oracle(和其他供应商)在未来的某个版本中不返回 char[] 共享,而只是执行 s = s.substr(. ..),或者我们是否应该显式地创建一个新的 String 以防 JRE 的某个 future 版本再次开始使用共享实现?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com