一个java基础的问题,求解答,在线等

allenguoguo 发布于 2015/06/02 16:17
阅读 222
收藏 1

package spring;

class C{

 StringBuffer str1 = new StringBuffer("A");
 StringBuffer str2 = new StringBuffer("B");

 public void prin(){
  operate(str1,str2);
  System.out.println(str1+" "+str2); 
 }
 
 public void operate(StringBuffer x,StringBuffer y){
  x.append(y);
  System.out.println("x "+x);
  System.out.println("y "+y);
  y=x; 
  System.out.println("y "+y);
 }
}
public class Test{
 public static void main(String []args){
  C c = new C();
  c.prin(); 
 } 
}



这里输出为什么是AB  B  而不是 AB  AB

加载中
0
Shazi199
Shazi199

y是形参,解答完毕

改变形参指向的对象,并不会影响实参

0
这样丶
这样丶
你可以把 str2 和 y 想象成2个变量, 都指向对象实体B, y=x只是改变了变量y的指向, str2指向的依旧是对象B, (byValue not byReference)
这样丶
这样丶
回复 @茶壶 : 呃, 那你感觉实参str2是把什么给了y?
返回顶部
顶部