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

java 引用类型变量值传递问题?

java 引用类型变量值传递问题?

PIPIONE 2019-03-12 16:19:12
本人有如下,代码:        StringBuffer stringBuffer = new StringBuffer();        StringBuffer stringBuffer1 = new StringBuffer();        stringBuffer.append("234");        stringBuffer1 = stringBuffer;// 赋值        stringBuffer.append("567");//修改stringBuffer 的同时也修改了stringBuffer1        System.out.println(stringBuffer);// 234567        System.out.println(stringBuffer1);// 234567我需要创建多个StringBuffer 对象,它们的初始值一样, 我期望得到的结果是,我在修改后面的值的时候,不会影响到其他前面的值(修改stringBuffer 的同时不修改了stringBuffer1),我该怎么做,小弟是菜鸟,求大神解答?
查看完整描述

6 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

这样?

stringBuffer1.append(stringBuffer.toString());


查看完整回答
反对 回复 2019-04-18
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

把你的stringBuffer通过toString方法保存为一个String,后面直接用带一个String参数的StringBuffer构造方法初始化。


查看完整回答
反对 回复 2019-04-18
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

在Java中,对象之间的赋值是引用赋值,改变赋值对象的值会引发原对象的值发生改变。如果要实现你说的效果,应当使用构造方法创建新对象。比如说,你可以这样做:


final String initialValue="234";

StringBuffer s1=new StringBuffer(initialValue);

StringBuffer s2=new StringBuffer(initialValue);


查看完整回答
反对 回复 2019-04-18
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

stringBuffer1.replace(0,stringBuffer1.length(),stringBuffer.toString());

这个也许可以帮助你
或者你就不先实例话stringBuffer1 而在赋值的那一段实例化并传入stringBuffer.toString()


查看完整回答
反对 回复 2019-04-18
?
www说

TA贡献1775条经验 获得超8个赞

用“=”是引用赋值,两个变量实际上是指向的同一个对象,想一个修改不影响另一个,只能新建一个对象。


查看完整回答
反对 回复 2019-04-18
  • 6 回答
  • 0 关注
  • 656 浏览

添加回答

举报

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