String b = a.subString(2); JDK6中通过观察源码发现b虽然创建了一个新的对象,但是value[]属性域仍然指向原来的a所指向的字符数组,只是重新定义了起始位置以及长度。 原因是为了避免内存拷贝、加快速度。但如果有一个"非常"长的字符串,每次使用substring()时只想要很小的一部分,那么将会引起另一个性能问题: 虽然只需要很小的一部分,但是持有了整个value[]的引用,从而导致大量内存被占用。因此在JDK7中为了解决这个问题,subString()方法真实的在 内存中创建了另一个字符数组。
subString() jdk1.7改进
最新推荐文章于 2023-11-12 21:29:57 发布