Java对象混乱

sk1*_*l3r 1 java android pointers object

我目前正在创建一个Android应用程序,并认为我在内部保存数据有问题等.事实证明问题与此无关,而是我对Java的理解.

问题是,当我这样做

myObject1 = myObject2;

并使用myObject1myObject3这可能是一个列表,或任何(对我来说一个Hashtable),然后改变myObject2,myObject3得到相应的改变,也是如此.这叫什么,我在哪里可以了解更多信息?如何分配myObject2myObject1,这样myObject1是完全"独立"?

Hun*_*len 5

作为Java中的对象的变量称为引用,并引用内存中的相同位置.如果您希望两个相同类型的对象不需要在内存中引用相同的位置,则可以使用关键字在您的计算机上为它们分配内存new.

在两个变量下面,myObject1和myObject2都是对OBJECT1对象的引用,但是在同一个内存位置不存在:

OBJECT1 myObject1 = new OBJECT1();
OBJECT1 myObject2 = new OBJECT1();
Run Code Online (Sandbox Code Playgroud)

如果将对象分配给另一个很重要,您可以查看clone()方法或使用复制构造函数:

public OBJECT1(OBJECT1 toCopy)
{
    this.field1 = toCopy.field1; 
    this.field2 = toCopy.field2; 
    this.field3 = toCopy.field3; 
    this.field4 = toCopy.field4;     
}
Run Code Online (Sandbox Code Playgroud)