java – 关于String #substring()方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 关于String #substring()方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1174字,纯文字阅读大概需要2分钟。
内容图文
![java – 关于String #substring()方法](/upload/InfoBanner/zyjiaocheng/721/a93e4c7cacec45dc9eb6407bd7797813.jpg)
如果我们看看String #substring方法实现:
new String(offset + beginIndex, endIndex - beginIndex, value);
我们看到使用相同的原始内容(参数char []值)创建了一个新的String.
因此,解决方法是使用新的String(toto.substring(…))删除对原始char []值的引用,并使其符合GC的条件(如果不存在更多引用).
我想知道是否有一个特殊的原因来解释这个实现.为什么该方法不会创建新的较短的字符串以及为什么她保留完整的原始值呢?
另一个相关的问题是:在处理子字符串时我们应该总是使用新的String(…)吗?
解决方法:
I would like to know if there is a special reason that explain this implementation. Why the method doesn’t create herself the new shorter String and why she keeps the full original value instead?
因为在大多数用例中,substring()以这种方式工作更快.至少,这就是Sun / Oracle的经验测量所表明的.通过这样做,实现避免了分配后备阵列并将字符复制到阵列.
如果您必须复制String以避免内存泄漏问题,那么这只是非优化.在绝大多数情况下,子串在相对较短的时间内变成垃圾,并且没有长期的内存泄漏.
假设,Java设计者可以提供两个版本的子字符串,一个表现为当前,另一个创建一个具有自己的后备数组的字符串.但这会鼓励开发人员浪费思考使用哪个版本的脑循环.然后是基于子串的实用方法的问题……比如Pattern / Matcher类.所以我认为他们没有这样做是件好事.
内容总结
以上是互联网集市为您收集整理的java – 关于String #substring()方法全部内容,希望文章能够帮你解决java – 关于String #substring()方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。