为了账号安全,请及时绑定邮箱和手机立即绑定

java源码 replace方法

java源码 replace方法

白衣染霜花 2018-09-05 21:34:42
下面是java源码replace方法的截图我对该方法的实现有疑问:为什么不直接用newChar取代buffer中的oldChar,在没有进行System.arraycopy()之前即便使用了System.arraycopy(),为什么不是System.arraycopy(buffer,_offset,buffer,0_count)
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2018-09-16
?
绝地无双

TA贡献1946条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-09-16
  • 2 回答
  • 0 关注
  • 877 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信