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

本人有如下,代码:


        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),我该怎么做,小弟是菜鸟,求大神解答?


PIPIONE
浏览 657回答 6
6回答

隔江千里

这样?stringBuffer1.append(stringBuffer.toString());

回首忆惘然

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

慕妹3146593

在Java中,对象之间的赋值是引用赋值,改变赋值对象的值会引发原对象的值发生改变。如果要实现你说的效果,应当使用构造方法创建新对象。比如说,你可以这样做:final String initialValue="234";StringBuffer s1=new StringBuffer(initialValue);StringBuffer s2=new StringBuffer(initialValue);

侃侃尔雅

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

www说

用“=”是引用赋值,两个变量实际上是指向的同一个对象,想一个修改不影响另一个,只能新建一个对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java