bodong_chen  
Java Space
日历
<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
统计
  • 随笔 - 11
  • 文章 - 3
  • 评论 - 2
  • 引用 - 0

导航

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

Log4j

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
Java中的参数传递传的是值value,而非对象的引用reference.
Java中,我们通过如下方法得到一个对象:
ArrayList aList = new ArrayList();
在此过程中,实际上生成了两个对象,一个是new ArrayList(),另一个是aList.Java中的对象名就是一个引用.什么是引用?从某种意义上讲,它与C中的指针有着相似之处,在我探讨的这个话题中,就可以把它看成指向某一内存地址的指针。
先看下面一个Java参数传递的例子:
import java.awt.Point;
class PassByValue
{
  public static void modifyPoint(Point pt, int j)
  {
    pt.setLocation(5,5);                                      //1
    j = 15;
    System.out.println("During modifyPoint " + "pt = " + pt +" and j = " + j);
  }

  public static void main(String args[])
  {
    Point p = new Point(0,0);                                 //2
    int i = 10;
    System.out.println("Before modifyPoint " + "p = " + p +" and i = " + i);
    modifyPoint(p, i);                                        //3
    System.out.println("After modifyPoint " + "p = " + p +" and i = " + i);
  }
}
在输出的结果中,Point对象的属性改变了,而int型数据i没有改变.于是一些人就草率地下结论说:Java中产数传递传的是引用!
仔细一想,会发现其中的问题.Java中定义的对象名就相当于一个指针,把它作为一个参数赋给一个方法的argument,实际上传的就是这个引用的值.在这个过程中并没有构建新的对象,而是直接把原来指向对象的引用传到了方法中,因此方法中通过这个argument进行的改变都会影响到调用这个方法的主函数中对象的属性值.
posted on 2005-11-21 22:00 bodong_chen 阅读(575) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © bodong_chen Powered by: 博客园 模板提供:沪江博客