求解一道java题

publicclassTest06{staticvoidoperate(StringBufferx,StringBuffery){y.append(x);y=x;//这里... public class Test06 {

static void operate(StringBuffer x,StringBuffer y){
y.append(x);
y=x;//这里不是把x赋值给了y了吗?
}
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);//答案为什么会是A,BA
}
}
展开
 我来答
风帆113
2013-10-23 · TA获得超过420个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:96.9万
展开全部

解析如下:

public class Test06 {

    static void operate(StringBuffer x,StringBuffer y){

        //这样理解:x,y只是一个地址。a,x指向同一个地址,y,b指向同一个地址

        //其中 x->'A',y->'B'

        //实参 a->'A',b->'B'

        

        y.append(x);//将x所指向地址的值添加到y指向地址的值得后面

        //结果:x->'A',y->'BA'

        //实参 a->'A',b->'BA'

        

        StringBuffer c =y;    //将c所指向y所指向地址

        //所以c->'BA'

        //实参 a->'A',b->'BA'

        

        y=x;//此时,只是让y指向x指向的地址,即y->'A'

        //结果:x->'A',y->'A'

        //实参 a->'A',b->'BA'

        //c->'BA'

        

        System.out.println("x="+x);//x=A

        System.out.println("y="+y);//y=A

        

        System.out.println("c="+c);//c=BA

    }

    

    public static void main(String[] args) {

        StringBuffer a=new StringBuffer("A");//

        StringBuffer b=new StringBuffer("B");

        operate(a,b);

        System.out.println("a="+a+","+"b="+b);

    }

}

结果如下:


ps:java中形式上没有“地址”这个概念,实际上是有的,可以这样理解。

luo_wenqiang
2013-10-23 · 超过16用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:25.7万
展开全部
把x赋值给y,只是在operate方法中把参数y的地址改为参数x的地址,在main方法中的b变量的地址并未改为。
在赋值之前,已经把参数x(其地址和变量a一致)追加到参数y(追加时y的地址和变量b的地址一致),这是y中的内容变成了BA。这相当于把变量b的内容改为了BA。

StringBuffer和String最大的区别在于,String的内容不可改变,每次字符串相加,都是创建一个新的String对象;而StringBuffer中的内容可以通过insert、append等方法修改。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuda1992
2013-10-23 · TA获得超过122个赞
知道答主
回答量:46
采纳率:100%
帮助的人:25.9万
展开全部
StringBuffer的特性和String不一样,去看下API
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式