Class中的类设置变量会改变所有变量

时间:2015-12-18 21:40:07

标签: java object

我会发布我的程序(轮盘赌),但它是用我的语言创建的,并且会有很多。所以这就像我的程序中的类一样。我不知道如何正确地谷歌这个问题。

requests

正如我在评论中所说,当我设置一个类'变量时,两者都会改变,即使我只想要一个。 我知道这看起来像是可怕的编程,我想也一样,但这是它对我有用的唯一方式(也是我知道如何对象的新方法)。任何建议都会很棒。

4 个答案:

答案 0 :(得分:2)

在Java中,对象变量是通过引用定义的。这意味着当你这样做时:

someClass2.variableC1=someClass1;

您实际执行的操作是将variableC1设置为指向存储someClass1的内存中的位置,variableC2的位置相同。

因此,由于两个变量都指向内存中的相同位置,因此一旦更改了此位置中的对象,就会影响它的两个指针。

答案 1 :(得分:0)

你必须记住,除非你在java中使用原语,否则一切都是引用。因此,当你将variableC1和variableC2都设置为someClass1时,它们现在都指向同一个对象。对一个的更改将反映在另一个中。

答案 2 :(得分:0)

堆栈中的类实际上是对堆中内存的引用。在Java中,类与C / C ++中的指针非常相似。

因此,当您将variableC1variableC2都设置为someClass1时,它们都会成为对堆中相同内存的引用。当您更改堆中的内存时,因为它们都引用相同的内存,所以两个变量都已更改。

答案 3 :(得分:0)

试试这个:

 someClass2.variableC1=new someClass1();
 someClass2.variableC2=new someClass1();

您必须使用创建2个对象。否则,两者都将引用相同的对象,即使用 = 运算符完成的操作:复制引用,对于对象。