Re: [問題] Getter and Setter

看板java作者 (Mr. Pan)時間11年前 (2013/07/13 10:46), 編輯推噓6(600)
留言6則, 6人參與, 最新討論串3/5 (看更多)

07/13 00:12,
然而,String不是也是物件嗎?可是他卻沒有這樣的問題
07/13 00:12

07/13 01:05,
因為Java的String是immutable
07/13 01:05
如同 coolcomm 大所說 Java 的 String 是 immutable,所以不會有這個問題, 下面用圖解的方式說明差異: ======================================================== class Foo{ private String fooStr="颱風"; private int[] fooArr=int[1]; public String getString(){ return fooStr; } public int[] getArray(){ return fooArr; } } public static void main(String[] args){ int[] array=new int[1]; String str="哭哭"; Foo f=new Foo(); str=f.getString(); array=g.getArray(); array[0]=1; str="囧囧"; } =============================================================== [ Main method line by line ] int[] array=new int[1]; ╭─────╮ array ───→ │ int[1] │ ╰─────╯ ------ String str="哭哭"; ╭─────╮ array ───→ │ int[1] │ ╰─────╯ ╭────╮ str ────→│ "哭哭" │ ╰────╯ ----- Foo f=new Foo();───╮ ┌──── f ╭─────╮ │int[1]│←┐ ↓ array ───→ │ int[1] │ ╰───╯ │╭─────╮ ╰─────╯ └┼─fooArr │ ╭────╮ │ │ str ────→│ "哭哭" │ ╭───╮ ┌┼─fooStr │ ╰────╯ │"颱風"│←┘╰─────╯ ╰───╯ ----- str=f.getString(); ╭───╮ ┌──── f ╭─────╮ │int[1]│←┐ ↓ array ───→ │ int[1] │ ╰───╯ │╭─────╮ ╰─────╯ └┼─fooArr │ ╭────╮ │ │ str ───┐ │ "哭哭" │ ╭───╮ ┌┼─fooStr │ ╰────╯ │"颱風"│←┘╰─────╯ └────────→ ╰───╯ ----- array=g.getArray(); ┌────────→ ╭───╮ ┌──── f ╭─────╮ │int[1]│←┐ ↓ array ──┘ │ int[1] │ ╰───╯ │╭─────╮ ╰─────╯ └┼─fooArr │ ╭────╮ │ │ str ───┐ │ "哭哭" │ ╭───╮ ┌┼─fooStr │ │ ╰────╯ │"颱風"│←┘╰─────╯ └────────→ ╰───╯ ----- array[0]=1; 因為 array 和 fooArr 指向同一個 object , 變動該 object 兩個變數都會受影響 (雖然說受影響好像不太恰當,反正就是兩個變數取出來的值會一樣) ----- str="囧囧"; 由於 Java String Immutable 的特性,當執行這個敘述的時候其實是這樣: ┌────────→ ╭───╮ ┌──── f │ ╭─────╮ │int[1]│←┐ ↓ array ──┘ │ int[1] │ ╰───╯ │╭─────╮ ╰─────╯ └┼─fooArr │ ╭────╮ │ │ str ──┐ │ "哭哭" │ ╭───╮ ┌┼─fooStr │ ╰────╯ │"颱風"│←┘╰─────╯ │ ╭───╮ ╰───╯ └─→ │"囧囧"│ ╰───╯ str 和 fooStr 是指向不同的 objecy -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.238.228.107

07/13 12:11, , 1F
這也太用心了吧...大推
07/13 12:11, 1F

07/13 13:14, , 2F
07/13 13:14, 2F

07/13 13:59, , 3F
推!
07/13 13:59, 3F

07/13 16:11, , 4F
推推
07/13 16:11, 4F

07/15 17:18, , 5F
超用心得啊,大推
07/15 17:18, 5F

07/20 01:57, , 6F
超用心啊!! 大推
07/20 01:57, 6F
文章代碼(AID): #1HuB-DEr (java)
文章代碼(AID): #1HuB-DEr (java)