求解问题

wzhg571893115 2010-02-04 04:03:16
我有下列的代码不接;谁给我讲解一下:

public static void main()
{
StringBuffer a=new StringBuffer["A"];
StringBuffer b=new StringBuffer["B"];
input(a,b);
System.out.prinln(a);
System.out.prinln(b);
}

public String input(string x, string y){
x.apped("bbb");
y=x;
}
运行的结果是 : Abbb
B
我想知道为什么b的结果不传回去呢?
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiesisi3 的回复:]
画一个图解最方便,现在只能勉强说一下了。。
这样,有四个引用a,b,x,y
现在当new完以后,a→"A"  b→"B"
当调用input方法的时候 a→"A" x→"A" b→"B" y→"B"
当调用x.append()的时候 a→"Abbb" x→"Abbb"(因为该对象已经被改变了,而两个引用指向同一个对象)b→"B" y→"B"
当执行y = x的时候 a→"Abbb" x→"Abbb" b→"B" y→"Abbb"(因为这里改变的是引用y里面存的内存地址,即让它指向了另一个对象)
所以最后执行System.out.println()的时候就是这个结果

[/Quote]
好详细,学习您这种敬业精神了!
xiesisi3 2010-02-04
  • 打赏
  • 举报
回复
画一个图解最方便,现在只能勉强说一下了。。
这样,有四个引用a,b,x,y
现在当new完以后,a→"A" b→"B"
当调用input方法的时候 a→"A" x→"A" b→"B" y→"B"
当调用x.append()的时候 a→"Abbb" x→"Abbb"(因为该对象已经被改变了,而两个引用指向同一个对象)b→"B" y→"B"
当执行y = x的时候 a→"Abbb" x→"Abbb" b→"B" y→"Abbb"(因为这里改变的是引用y里面存的内存地址,即让它指向了另一个对象)
所以最后执行System.out.println()的时候就是这个结果
luhui436 2010-02-04
  • 打赏
  • 举报
回复
路过
dickli1986 2010-02-04
  • 打赏
  • 举报
回复
大哥,编译都过不去,改成这样:
package test;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
input(a, b);
System.out.println(a);
System.out.println(b);
}

public static void input(StringBuffer x, StringBuffer y) {
x.append("bbb");
y = x;
}
}

结果:
Abbb
B
java是值传递的
zhangwenmin 2010-02-04
  • 打赏
  • 举报
回复
错误太多...

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧