为什么我的对象在java中使用相同的变量?

时间:2014-04-16 13:55:39

标签: java arrays

当我将所有变量都存储为int[][]时,就会出现此问题。我有一个对象。每次单击按钮时,我都会创建一个具有自己变量的新对象。问题是我决定将所有int变量存储在int[][]中,现在我创建的每个对象都使用相同的int[][]网格。所以我不确定我在这里做错了什么。

我尝试在对象构造函数中和构造函数外部启动数组int[][],即public static int[][] grid;,然后在构造函数内启动它,或者我在构造函数中将其作为int[][] grid = new int[20][20]启动。

有关为何发生这种情况的任何想法?在我有一个特定的String变量来保存int值之前,当我更改它时,所有要存储在int[][]中的所有新对象都使用相同的网格。

1 个答案:

答案 0 :(得分:3)

向我们提供您的代码会非常棒。拥有您正在谈论的代码时,帮助变得更加容易。但是你的解释中有一句话引起了我的注意:静态。

  

我尝试在对象构造函数中和构造函数外部启动数组int [] []。 public static int [] [] grid;然后在构造函数中启动它,或者我在构造函数中以int [] [] grid = new int [20] [20]启动它。

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

这意味着你让你的领域变得静止。静态字段属于类,但不属于实例。所以你的所有实例共享同一个网格。即使你在结构化器中实例化它,也只有一个这样的网格。

如果您想要一个设计,每个实例都有自己的网格,只需删除static关键字。