`
java-admin
  • 浏览: 1365019 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

JAVA传参的问题

阅读更多
public class Test1
{
 static void swap(StringBuffer a,StringBuffer b)
 {
  a.append(" more");
  b=a;
 }
 public static void main(String args[])
 {
  StringBuffer a=new StringBuffer("One");
  StringBuffer b=new StringBuffer("Two");
  swap(a,b);
  System.out.println("a is "+a+"\nb is "+b);
 }
}

 

这是JAVA传参的问题,
你把
StringBuffer a=new StringBuffer("One");
StringBuffer b=new StringBuffer("Two");
改成
StringBuffer A=new StringBuffer("One");
 StringBuffer B=new StringBuffer("Two");
就会更明白问题了。
首先new完后对象引用A、B分别指向地址[A]、[B]
然后swap(A,B),把对象引用A、B的地址传给另两个对象引用a、b
然后在swap方法中通过a.append(" more")改变了A和a共同指向的地址[A]
而b=a只是把对象引用b指向a的地址[A]而已,不影响对象引用B

OneTwo,Two

OneTwo,OneTwo

 

分享到:
评论
2 楼 在世界的中心呼喚愛 2013-03-27  
a is One more
b is Two
1 楼 在世界的中心呼喚愛 2013-03-27  
java  不支持引用传递,当成值传递就行。
不过这个例子,还是不错。

相关推荐

Global site tag (gtag.js) - Google Analytics