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

标签 java variables static-methods program-entry-point void

据说非静态变量不能在静态方法中使用。但是 public static void main 可以。怎么样?

最佳答案

不,不是。

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

关于java - public static void main() 访问非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522026/

相关文章:

java - 测试 applicationContext : org. springframework.core.annotation.AnnotationUtils.getAnnotationAttributes

java - 在Java中以可读格式从双变量打印大数

c++ - 访问修饰符是否适用于静态类函数?

Javascript,从静态函数打印全局对象

java - 如何避免在jsp中重新加载js和css

java - 在 TestLuck(概率)程序中计算平均值

Ruby 从文件中读取变量

r - 如何从 R 中的 (9) 个重复值创建新变量?我需要循环吗?

iphone - 如何构造和使用变量名称?

java - 仅为sharedPreferences方法创建新类是否值得?