作者darkk6 (Mr. Pan)
看板java
標題Re: [問題] Getter and Setter
時間Fri Jul 12 23:57:47 2013
Java 的 Array 是物件,這點可能是你沒考慮到的問題吧
底下注意,同樣顏色的變數名稱是指向同一個物件
: public static void main(String[] args) {
: Foo mFoo = new Foo();
: int[][] arrayA =
new int[10][10];
: arrayA = mFoo.getFooArray();
: arrayA[0][0] = 100;
: System.out.println(arrayA[0][0]);
: mFoo.printFooArray();
: }
: public class Foo {
: private int[][] fooArray;
: public Foo() {
: super();
: fooArray =
new int[10][10];
: }
: public int[][] getFooArray(){
: return fooArray;
: }
: public printFooArray(){
: System.out.println(fooArray[0][0]);
: }
: }
: 以上印出來卻都是100....
從 main 的第三行之後, arrayA 已經指向 foo 裡面 fooArray 所指向的 array 了
因此都是 100 是正常的
最主要的原因就是參考到的東西是一樣的,這種情況通常會用 setValue(i,j,val)
和 getValue(i,j) 這種方式來進行,或者 copy 一個 array 傳回去,不要和
fooArray 指向同一個 array 即可。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.208.62
推 gn00742754:我懂為什麼是100,但是很多時候在設計Class,常常會需 07/13 00:08
→ gn00742754:要Getter&Setter一些Object的欄位,那這樣不就都要Clon 07/13 00:09
→ gn00742754:e一份物件讓Getter回傳? 07/13 00:11
→ gn00742754:然而,String不是也是物件嗎?可是他卻沒有這樣的問題 07/13 00:12
推 coolcomm:因為Java的String是immutable 07/13 01:05
→ TonyQ:看這篇 不一定需要自己實作 07/13 11:35