作者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
→ WPC001:對扯遠一點有一點點意見, 如果真要這樣說, 那所有皆是cbv 03/01 01:41
→ WPC001:就算是像Fortran, 也僅是把"指標的值"給複製過去,那也是cbv 03/01 01:44
推 AI3767:樓上可以去看一下 #1B4qudnW 和它整個討論串.call-by-value 03/01 04:29
→ AI3767:和call-by-reference是不同的,cbr運作上是直接把變數bind在 03/01 04:31
→ AI3767:同個物件上,而cbv的cba運作是用一塊記憶體,指向那個物件 03/01 04:34