public static void main() 访问非静态变量

新手上路,请多包涵

据说静态方法中不能使用 非静态变量。但是 public static void main 确实如此。那个怎么样?

原文由 user1526671 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 383
1 个回答

不,它没有。

 public class A {
  int a = 2;
  public static void main(String[] args) {
    System.out.println(a); // won't compile!!
  }
}

public class A {
  static int a = 2;
  public static void main(String[] args) {
    System.out.println(a); // this works!
  }
}

或者如果你实例化 A

 public class A {
  int a = 2;
  public static void main(String[] args) {
    A myA = new A();
    System.out.println(myA.a); // this works too!
  }
}

public class A {
  public static void main(String[] args) {
    int a = 2;
    System.out.println(a); // this works too!
  }
}

会起作用,因为 a 在这里是局部变量,而不是实例变量。方法局部变量在方法执行期间始终是可访问的,无论该方法是否 static

原文由 Keppil 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题