Re: [問題] Getter and Setter
→
07/13 00:12,
07/13 00:12
推
07/13 01:05,
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):