java源码 replace方法
下面是java源码replace方法的截图
我对该方法的实现有疑问:
为什么不直接用newChar取代buffer中的oldChar,在没有进行System.arraycopy()之前
即便使用了System.arraycopy(),为什么不是System.arraycopy(buffer,_offset,buffer,0_count)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1.因为java的字符串是不可改变的,replace会返回一个新的字符串对象,原来的字符串没有改变,如果直接newChar替换oldChar原来字符串内的char数组元素也被改变了
2.同理,为了保证字符串对象的值不改变,每个字符串变量内都要引用一个独立的char数组,而不能出现不同字符串引用同一个char数组的情况。
buffer
是原来字符串的内部数组,你直接取代的话,原来的字符串不就也被修改了吗?!自己拷贝自己?不明白你的意思是什么!这里用
arraycopy
是为了快速创建一个内容和原来的buffer
一样的新数组,自己拷贝自己最后得到的还是同一个数组,有什么意义