Feng.Li's Java See

抓紧时间,大步向前。
随笔 - 95, 文章 - 4, 评论 - 58, 引用 - 0
数据加载中……

关于Java的传值问题,个人感觉书上说的都不好,请进来听听我的看法。

 关于值传递和引用传递的问题,我想很多人刚开始学的时候都会很迷惑,特别是有些书的文学水平实在不敢恭维。
在此,我特在此对Java的传值和传址提出我自己的一个看法,也许让你能对这个问题的理解起到帮助。
        首先:值传递是很好理解的。比如:
        public   class   test   {
      int   a   =   3;
      public   void   plus(int   b){
        b     =   b+1;
        }
        public   static   void   main(String   args[])
      {
        test   t   =   new   test();
        t.plus(t.a);
        System.out.println(t.a);
      }
      }
    输出的结果是3.这就是值传递。其实我们可以这样理解:
          在plus(int   b)函数里,int   b是作为这个函数的一个局部变量,在调用这个函数的时候开始位这个变量的内存空间。当我把变量a传给这个函数的时候,实际上是把a变量当时的值拷贝一个放到变量b的分配空间里,b   =   b+1;这句改变的只是函数的局部变量b的值,当调用结束的时候,变量b的作用范围也就结束了,而你在什么时候修改了变量a的分配空间呢?当然是没有啦(除非你理解成变量a的空间整个放进b的空间里:))

      而所谓的引用传递,我觉得这个名次起的很混淆视听。以我自己的理解,一切传递都是拷贝传递。因为对象的标识符代表的是对象的存储地址,所以你把对象的标识符号传递给函数的时候,实际上是把对象地址的拷贝传递给了函数。虽然也是拷贝,但是2个地址拷贝都是指向一个地址的,所以如果在函数里修改了对象,那么也实际上就修改了原先的值.
归根到底一句话:Java一切参数的传递都是拷贝传递!

posted on 2008-01-29 15:03 小锋 阅读(1309) 评论(4)  编辑  收藏 所属分类: J2SE

评论

# re: 关于Java的传值问题,个人感觉书上说的都不好,请进来听听我的看法。   回复  更多评论   

曾经学JAVA的时候老师讲过,JAVA中都是值传递。
(所谓的引用传递,传递的也是引用变量在物理内存中的值。)
2008-01-29 17:05 | 久城

# re: 关于Java的传值问题,个人感觉书上说的都不好,请进来听听我的看法。   回复  更多评论   

http://www.blogjava.net/sitinspring/archive/2008/01/16/175677.html

2008-01-29 17:11 | 如坐春风

# re: 关于Java的传值问题,个人感觉书上说的都不好,请进来听听我的看法。   回复  更多评论   

政治
2008-01-30 13:24 | 政治

# re: 关于Java的传值问题,个人感觉书上说的都不好,请进来听听我的看法。 [未登录]  回复  更多评论   

那如何在HashMap和JTable之间传值。。。。。。。。
2008-03-19 20:36 | 石头

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


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问