看板 java 關於我們 聯絡資訊
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
TonyQ:http://goo.gl/CxiLt 剛貼錯貼到置底去了 :Q 07/13 11:38