Re: [問題] 請教一個基本的問題
※ 引述《adrianshum (Alien)》之銘言:
: 把它理解為 "obj 就是 call by ref" ,包準你會
: 在另一種情況下搞混。
:
: 例如:
:
: void foo(String a) {
: a += "foo";
: }
:
: String x = "xxx";
: foo(x);
: // x 的結果是什麼?
:
: 很不幸,把東西說成 "物件就是 call by ref"
: 對這種情況十居其九都會搞錯
:
: 何不好好理解一下 Java 自己的說法: Java 只有 pass-by-value.
:
: object 傳的是 reference (或者理解為 handle, pointer etc) 的
: copy. 只為這個 copy 和原本的 reference 都是指向同一 object,
: 所以修改 obj 的內容,caller 也會看得到.
: 推 petertc:從這樣的結果來看String的行為與primitive type相同 12/02 17:01
: → petertc:但String不是primitive type吧? 12/02 17:03
String 的情況不同, 它不是 primitive type
但是它是 immutable object
也就是說一旦建構完成, 此物件的內容就不能再改變了
之後所有的改變都是新增一個複本, 所以不會作用回 function 外
其他還有 Integer, Double ... 等
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.49.160
※ 編輯: legnaleurc 來自: 112.104.49.160 (12/03 22:07)
→
12/03 23:12, , 1F
12/03 23:12, 1F
→
12/03 23:14, , 2F
12/03 23:14, 2F
→
12/03 23:32, , 3F
12/03 23:32, 3F
→
12/03 23:45, , 4F
12/03 23:45, 4F
→
12/04 00:26, , 5F
12/04 00:26, 5F
討論串 (同標題文章)