正在加载...
 
 登 录/注 册    帮助  |  反馈
相关主题:
    管 理  员:
    关 键  字:
    目 标 :[ 目标剩余时间: ]
    似乎已经突破了一种程序语言的界限,做的这么大而全,不知道到底是不是好事?
        
    作者
        评论:按值传递-Java中永远是按值传递   [2008-11-12]回复
    专家用户
    参与值:1576
    贡献值:24

    原 文章:按值传递-Java中永远是按值传递

     

    CSDN上的一篇《java按值传递还是按引用传递详细解说》,于是发了一个帖子,看看CSDN上的反映,

    为什么? 关于Java只有按值传递

    -----------------------------------------------------------------------------

    Java只有按值传递,但是看见一些人反复讨论这个问题,不禁要问一下为什么?

    1、说“按引用传递”的人也是经过思考的,是不是他们使用了不同的术语,或者他们的术语不同于我们的术语?
    2、说“按引用传递”的人,有哪些典型人物?
    我知道的有TIJ,忘记第几版了,最新版改了没有,知道的说一下。
    还有CSDN上的一篇《java按值传递还是按引用传递详细解说》
    有没有正规教材上说“按引用传递”的?
    3、C语言也讨论“按引用传递”这个问题吗?
    4、为什么“按引用传递”是错误的?[不要讨论它错误之处,而是问一问他们的思路为什么错误】?

    --------------------------------------------------------------------

    反馈如下:

    1、有人说:

       1 我把房子搬着,然后把房子给你,这就是传值
       2 我把写有房子地址的纸条给你,这就是传引用

    房子、纸条寓意很好,直观。可以借鉴。虽然他的概念错误。

    2、《详细解说》不看也罢,都是术语混用带来的问题,一点不新鲜。

    3、Thinking in Java作者居然在第4版还坚持“按引用传递”,有一天他会后悔的。关于Thinking in Java,假设世界上没有C++,只有C和fortran语言,我不知道他说的那些东西那里准确.

    4、“问题还是出在java设计时的术语选择上,比如Object obj;把这个obj称为“引用”,同时强调传参数时不是"pass by reference",本身就怪怪的。”术语混用带来的问题,注意永远不能够混用变量和它的值。

    int i;i是值吗?不是。
    Object obj;obj是值(引用)吗?不是。

    要强调这一点!

    5、我说的:Java中接口的术语也讨厌的很,因为我们在非Java的环境中广泛使用的接口概念遇到它的干扰。
    虽然Java中接口的确是个很好的术语。按接口编程、接口与实现分离等等

    6、【《java2入门经典》也说的是基本类型传的是值得副本,对象传的引用的副本。在那一页,我忘了,反正着本书讲的挺好的,用了3页讲这个知识点,还带图着呢,】传的引用的副本,没有问题。他理解出问题了。

    7、注意:

    对比几种译本 VS 原版讲解
    基础概念 Vs 奇技淫巧(茴香豆的第五种写法)
    8、传引用 VS 传的是Java引用

    foo(int i){}
    obj.foo(jjjj)我送你一个盒子jjjj如果我把jjjj这个盒子搬着,然后把盒子给你,典型的传引用!
    9、“无视这个问题就行了”,常见的说法,为什么会这样?考虑,,

    10、“他们有争议的,是这种传递方式的抽象命名而已.”

    这是一句话就能够解决的问题,“按引用传递”是各种各样不同语言的传参数的方式之一,意思是方法操作实参本身.Java的引用和C语言的指针,它们都是copy后传递的.

    11、“可能誤解,就由這種高深見解而來的
    引用也是一個值,只是對引用的操作即是對引用所對應的實際對象進行操作而己
    從來java中就不能直接對對象進行操,只能以引用進行
    你何時傳遞過對象了?”这个正解。

    12、“我了解的是基本类型按值传递,对象是引用传递。”、“Java只有按值传递?谁说的???”毒害很广,

    13、“JAVA中当然有搬房子啊!比如数字1,作为参数传递时”,提醒了我,需要介绍参数传递的来源,它为什么重要?因为模块化。

    int i =5;
    A a
    = new A();
    obj.doSth(i);
    //doSth把纸条加10
    obj.doOtherSth(a);//doOtherSth把a指向我自己买的房子,
    print(i);//5 VS 15?
    a.装修();// 我自己 Vs 你写的

    14、副作用

     

    专家用户
    参与值:1576
    贡献值:24
     yqj2065  2008-11-12 评论  引用

    CSDN和i170各自的优点:

    i170远离浮躁,CSDN胜于交流

     

      发表评论:

      ©2006-2008 深圳市海为信息技术有限公司  关于i170 | 工作机会 | 联系我们            粤ICP备05095695号