有关性能考虑因素的问题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的未来版本开始使用共享实现再次?
| 归档时间: | 
 | 
| 查看次数: | 2071 次 | 
| 最近记录: |