java 中的对象和引用 - 解释答案

Objects and references in java - explain the answer

我很困惑,因为我是新手java,下面这段代码创建了多少个对象和引用?

public class Test {

Test obj1,obj2,obj3;

    public static void main(String ar[]) {
        new Test();
        obj2=obj3=new Test();
    }
}

请解释答案:

2 objects, 3 references

该代码片段创建了两个 Test 类型的对象,每个地方都写了一个 new Test();

这里还有3个引用(变量)1obj1,obj2,obj3.

最后,你有:

  • 1 个对象无法访问
  • obj2,obj3
  • 引用了一个对象
  • obj1null.

另请注意,您似乎忘记将变量声明为 static - 否则代码将无法编译。 ("Cannot make static reference to a non static field") - 因为 main() 是静态的 - 它只能访问 class 变量 (附加了 static 修饰符)

public class Test {

    static Test obj1,obj2,obj3; //3 references/variables
  //  ^
  //added static keyword


    public static void main(String ar[]) {  
        new Test(); //1 object
        obj2=obj3=new Test(); //second object created
    //  ^obj2,obj3 both are referring the 2nd object now
    }
}

(1) 至 Test 个对象。