小结

来源:互联网 发布:nba身体素质排名 知乎 编辑:程序博客网 时间:2024/04/26 19:32

 

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 你写的

 

原创粉丝点击