作者LPH66 ((short)(-15074))
看板java
标题Re: [问题] 对java的一些疑问...
时间Mon Mar 1 00:17:38 2010
※ 引述《WPC001 (突然觉得自己是孤独的...)》之铭言:
: 2. java是call by value, 但书上说, 针对类别产生的物件, 是call by address
call by reference
Java 哪来 address 给你 call ? XD
: 这让我觉得这个语言缺乏一致性...
: 针对内建的型别(类别), 是call by value (copy), 而自订的类别是call by address
: 当然这可以是"特例", 但就觉得缺乏美感... XD
用我的观点讲这个好了
在我的理解里 Java 的 reference type 只不过是个不能做加减法的指标而已
那麽 不管是 function call 的参数传递 还是 operator = 的 assignment
对 primitive type 就是把值给丢过去 这没什麽问题
对 reference type 就是把那个指标的值给丢过去 这正好就是 call by reference...
所以都是把值丢过去 没什麽不一致的
---
扯远一点
call by address 其实是个错误的讲法
它的意思只不过是指所传的东西是个 pointer 而已 它还是 call by (pointer) value
不过用这个说法正代表了这书的作者也同意 Java 其实全部都是 call by value...
--
[LPH] Oops, your OOP's a problem? 说:
你现在还是看不到狗?
************* 说:
看得到 只是 他们不会跑 就一直呆呆在那边 一直在起点
[LPH] Oops, your OOP's a problem? 说:
你要按"ㄅㄧㄤˋ"它们才会跑啊@@"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.28.92
1F:→ WPC001:对扯远一点有一点点意见, 如果真要这样说, 那所有皆是cbv 03/01 01:41
2F:→ WPC001:就算是像Fortran, 也仅是把"指标的值"给复制过去,那也是cbv 03/01 01:44
3F:推 AI3767:楼上可以去看一下 #1B4qudnW 和它整个讨论串.call-by-value 03/01 04:29
4F:→ AI3767:和call-by-reference是不同的,cbr运作上是直接把变数bind在 03/01 04:31
5F:→ AI3767:同个物件上,而cbv的cba运作是用一块记忆体,指向那个物件 03/01 04:34