在main()方法中访问实例变量?

时间:2016-01-27 17:24:54

标签: java static instance

 class Test {
     Test obj;
     public static void main(String[] args) {
         obj = new Test();
     }
 }

我知道实例变量和非静态方法在静态方法中是不可访问的,因为静态方法不知道堆上的任何内容。

我想询问main是否是一个静态方法如何访问实例变量'obj'。

2 个答案:

答案 0 :(得分:4)

为什么在静态main中访问实例变量是不可能的: 的实例变量您希望访问哪个实例

一种可能的误解是Java在应用程序启动时创建了主类的实例 - 但事实并非如此。 Java不会创建这样的实例,而是从静态方法开始,由您创建的类的实例取决于您。

出于这种方式:

  • Test obj声明为static

    static Test obj;
    public static void main(String[] args) {
        obj = new Test();
    }
    
  • 在主

    中声明Test obj为局部变量
    public static void main(String[] args) {
        Test obj = new Test();
    }
    
  • Test中创建main的实例,然后您就可以访问其实例变量

    static Test obj;
    public static void main(String[] args) {
        obj = new Test();
        obj.myInstanceVariable = ... // access of instance variable
    }
    

答案 1 :(得分:0)

obj static应该是这样的:

   static Test obj;

主方法也无法访问非静态成员。