锁定老帖子 主题:一个绝对害了不少人的Java技术问题!
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-04-12
我绝对的希望大家注意http://www.parrotcode.org/的parrot,这个vm我认为是值得期待的。我认为在这个VM上perl和python将和多数的脚本语言走到一起,而java会被影响无疑是肯定的,但是具体会发生什么我还不知道。相信在3年后这个问题就会有答案,不过我想暂时的对于robbin和dlee来说他们是肯定会从这个项目中得到好处的。
|
|
返回顶楼 | |
发表时间:2004-04-12
ozzzzzz 写道 我绝对的希望大家注意http://www.parrotcode.org/的parrot,这个vm我认为是值得期待的。我认为在这个VM上perl和python将和多数的脚本语言走到一起,而java会被影响无疑是肯定的,但是具体会发生什么我还不知道。相信在3年后这个问题就会有答案,不过我想暂时的对于robbin和dlee来说他们是肯定会从这个项目中得到好处的。
对于动态语言来说用什么VM并不重要,重要的是Libary,Libary never changes. |
|
返回顶楼 | |
发表时间:2004-04-15
wuweixian 写道 Java只有一种参数传递方式,那就是传值。
以上是个人的一点理解,有不同意见欢迎探讨! 赞同这个观点,楼主说的跟这个也相容的吧。 |
|
返回顶楼 | |
发表时间:2004-04-15
^_^,没有想到还有人在回复这个帖子~~~~~~~~~~~~~
我懂楼上的意思,但是为了避免误会,应该是这样说,基本数据类型传递的是值,而对象传递的是指向的值(因为基本数据类型没有指向这一概念可说,所以两者也不好比较) |
|
返回顶楼 | |
发表时间:2004-04-16
传值还是传引用(或指针),我想这需要看系统实现和硬件的寻址能力。对32位系统来说,32位长度以下的数据可以传值也可以传引用,对32位长度以上的数据,除了传引用,没有办法可以把完整的数据以传值的方式进行传递。个人意见,仅供参考。
|
|
返回顶楼 | |
发表时间:2004-04-19
你好凤舞凰扬,很高兴能有机会参与你的问题讨论!
我就对“凤舞凰扬”里的代码讨论。 论点:句柄“t”并不就是代表对象“obj”.句柄“t”只是指向对象“obj”的指针而已。 论据:在方法call里---“t=t2”即现在句柄“t”所指向的是“t2”,也就是说句柄“t”现在是对象“t2”的句柄。 public void call(Test t) { Test t2 = new Test(); t2.setName("cba'); t.setName("abc"); t = t2 ; ///下面的代码可以说明“t”指向的是对象“t2” t.setName("ttttttttttt"); System.out.println("t2被改变了"+t2.getName()); } 即"t2"是在main里定义的,传进call里的是两个句,结果也是一样的. |
|
返回顶楼 | |
发表时间:2004-04-19
t == t2
|
|
返回顶楼 | |
发表时间:2004-05-08
我也觉得问题出在t = t2 ;
对于对象,先开始通过函数调用,t是obj 的引用,但t=t2这句使t变为t2的引用了,当然obj根本没发生变化,还是开始t得到的值。 俺是初学者,这是俺的一点理解。 |
|
返回顶楼 | |
发表时间:2004-05-12
确实是这样的,我曾怀疑过,问了一个网友,他说JAVA中没有传址这一说,所以我也就没有细追究,经你这么这提,我调了一下确实是的,对象作为参数时是其实也就是C++里的传址操作,但对象赋给对象是传值操作,把右边对象的相应的数据成员值拷贝给左边对象的相应的数据成员。
|
|
返回顶楼 | |
发表时间:2004-05-12
别把概念弄错了,人家可说的是对象作为方法的实参时,可不是在方法里面的赋值操作,赋值确实是传值。
|
|
返回顶楼 | |