2014-04-16 22 views
0

當我將所有變量存儲到int[][]中時,出現此問題。我有一個對象。每次我點擊一個按鈕,我都會創建一個具有自己變量的新對象。問題是我決定將所有int變量存儲在int[][]中,現在我創建的每個對象都使用相同的int[][]網格。所以我不確定我在這裏可能會做錯什麼。爲什麼我的對象在java中使用相同的變量?

我試圖在對象構造函數中和構造函數外創建數組int[][],然後在構造函數內啓動它,或者在構造函數中將其初始化爲int[][] grid = new int[20][20]

任何想法爲什麼會發生這種情況?在我有一個特定的String變量來保存int值之前,但是當我將其中的所有內容都存儲在int[][]中時,我創建的所有新對象都使用同一個網格。

+1

順便說一下,這是'int [] []'field' static'嗎?如果是,那麼這就是你的問題的根源。 –

+3

您能否提供您的班級定義的相關代碼? – ajp15243

+1

在這裏看看:http://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-a-class – UserFuser

回答

3

向我們提供您的代碼本來是美好的。擁有你正在談論的代碼時,幫助更容易。但是你的解釋中有一句話引起了我的注意:靜態的。

我已經嘗試在對象構造函數和構造函數外部啓動數組int [] [] []。 public static int [] [] grid;然後在構造函數中啓動它,或者我在構造函數中將它初始化爲int [] [] grid = new int [20] [20]。

您寫道:public static int[][] grid

這意味着你做了現場靜。靜態字段屬於類,但不屬於實例。所以你所有的實例共享同一個網格。即使你在析構器中實例化它,也只會有一個這樣的網格。

如果您想要一個設計,其中每個實例都有自己的網格,只需刪除static關鍵字。

相關問題