Java 将实例变量指定给静态变量

Java 将实例变量指定给静态变量,java,static,Java,Static,我有这样的想法: public class Test { public static MyObject o4All = null; public MyObject o4This = null; public void initialize() { // create an instance of MyObject by constructor this.o4This = new MyObject(/* ... */);

我有这样的想法:

public class Test {

    public static MyObject o4All = null;

    public MyObject o4This = null;

    public void initialize() {

        // create an instance of MyObject by constructor
        this.o4This = new MyObject(/* ... */);

        // this works, but I am wondering
        // how o4All is internally created (call by value/reference?)
        Test.o4All = this.o4This;

    }
}
我知道,我应该只通过静态方法分配或更改静态变量。但是根据javadocs(),我可以使用对象引用

类方法无法访问实例变量或实例方法 它们必须直接使用对象引用

如果我更改了O4的属性该怎么办?o4All的属性是否也会间接改变

如果我更改了O4的属性该怎么办?o4All的属性也会改变吗 间接改变

,它将被更改。因为现在,
o4All
o4This
都引用同一个实例。您通过以下任务完成了此任务:-

Test.o4All = this.o4This;
在上面的赋值中,您不是在创建由
o4This
引用的实例的副本,而是在
o4All
引用中复制
o4This
的值。现在,由于
o4,该
值是对某个
实例的引用。因此,
o4All
现在引用了与
o4This
相同的实例。因此,使用引用对
实例所做的任何更改也将反映在另一个引用中。

您不会将变量指定给变量,而是将对象引用指定给变量。这是一个很大的区别,理解这一点将帮助你理解你的程序的行为和Rohit Jain的建议。