Re: [問題] 對java的一些疑問...

看板java作者 ((short)(-15074))時間16年前 (2010/03/01 00:17), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串6/12 (看更多)
※ 引述《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

03/01 01:41, , 1F
對扯遠一點有一點點意見, 如果真要這樣說, 那所有皆是cbv
03/01 01:41, 1F

03/01 01:44, , 2F
就算是像Fortran, 也僅是把"指標的值"給複製過去,那也是cbv
03/01 01:44, 2F

03/01 04:29, , 3F
樓上可以去看一下 #1B4qudnW 和它整個討論串.call-by-value
03/01 04:29, 3F

03/01 04:31, , 4F
和call-by-reference是不同的,cbr運作上是直接把變數bind在
03/01 04:31, 4F

03/01 04:34, , 5F
同個物件上,而cbv的cba運作是用一塊記憶體,指向那個物件
03/01 04:34, 5F
文章代碼(AID): #1BYfSb30 (java)
討論串 (同標題文章)
文章代碼(AID): #1BYfSb30 (java)