首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教个关于StringBuffer作为参数的有关问题

2012-08-02 
请问个关于StringBuffer作为参数的问题Public class Test{Public static void main(String[] args ){Strin

请问个关于StringBuffer作为参数的问题
Public class Test{
  Public static void main(String[] args ){
  StringBuffer a=new StringBuffer("A");
  StringBuffer b=new StringBuffer("B");
  Oprate(a,b);
  System.out.println(a+","+b);  
  }
  Static void Oprate (StringBuffer x, StringBuffer y){
  x.append(y);
  y=x;
  }
}
a)A,B
b)AB,B 
c)A,AB 
d)AB,AB 


为什么答案是B。。

[解决办法]
x.append(y); 所以为 AB
y=x; 这个在局部方法内无效,所以操作之后,y仍是B
[解决办法]
是B啊,因为你没有改变StringBuffer y的值,它不是引用类型
[解决办法]
值传递和引用传递的区别,如果穿的是基本类型,调用方法后,值将改变,而传引用类型,值不变,append是内部方法,调用会改变。
[解决办法]

Java code
 class Test{  public static void main(String[] args ){  StringBuffer a=new StringBuffer("A");  StringBuffer b=new StringBuffer("B");  Oprate(a,b);  System.out.println("方法完成之后AB"+a+","+b);  System.out.println("方法完成之后的AB指向的对象为"+a.hashCode()+","+b.hashCode());  }  static void Oprate (StringBuffer x, StringBuffer y){  x.append(y);  y=x;  System.out.println("方法完成之后XY"+x+","+y);  System.out.println("方法完成之后的XY指向的对象为"+x.hashCode()+","+y.hashCode());  }} 

热点排行