静态变量可以在运行时分配内存

时间:2013-11-03 06:51:22

标签: java class jvm runtime

我是java的新手,我正在尝试理解JVM的工作顺序。我有以下查询。

1)可以在运行时加载一个类。

2)静态变量可以在运行时分配内存。

3)为什么静态变量不能在java中的函数内定义?

如果你可以借助下面给出的例子解释我,可能是这样的:

public class Test{
             public static void main(String[] args)throws IOException {
             static int d;
   }
}

在这个例子中,静态被写入一个会产生错误的方法中。如果你能用上面的语境解释这个,那将会很有帮助。

1 个答案:

答案 0 :(得分:1)

简单回答

  1. 是/否
  2. 细节

    1. 您可以在运行时加载任何java类,通常这是通过Classloader
    2. 完成的
    3. 所有静态变量实际上都是由JVM(而不是你)在运行时分配和初始化的,通常就在你使用它们之前,看看这个答案:Order of initialization of static variable in Java
    4. 您也可以使用新值/内存在代码中重新分配最终的静态变量,例如:

      static String a = "a"; // default value to be used by JVM during init
      public static void main(String[] args)
      {
          System.out.println(a); // will print a, as JVM already initialized it with "a"
          a = "b"; // we've changed value
          System.out.println(a); // now will print b
      }
      

      但你不能在函数内部定义静态变量,可以在c / c ++中,但不能在java中