java源码 replace方法

发布于 2022-09-01 22:39:19 字数 354 浏览 21 评论 0

下面是java源码replace方法的截图
replace方法

我对该方法的实现有疑问:

  1. 为什么不直接用newChar取代buffer中的oldChar,在没有进行System.arraycopy()之前

  2. 即便使用了System.arraycopy(),为什么不是System.arraycopy(buffer,_offset,buffer,0_count)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

过期情话 2022-09-08 22:39:19

1.因为java的字符串是不可改变的,replace会返回一个新的字符串对象,原来的字符串没有改变,如果直接newChar替换oldChar原来字符串内的char数组元素也被改变了
2.同理,为了保证字符串对象的值不改变,每个字符串变量内都要引用一个独立的char数组,而不能出现不同字符串引用同一个char数组的情况。

信仰 2022-09-08 22:39:19

buffer是原来字符串的内部数组,你直接取代的话,原来的字符串不就也被修改了吗?!

自己拷贝自己?不明白你的意思是什么!这里用arraycopy是为了快速创建一个内容和原来的buffer一样的新数组,自己拷贝自己最后得到的还是同一个数组,有什么意义

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文