0

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

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

2)静态变量能否在运行时分配内存。

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

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

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

在这个例子中,静态被写在一个会给出错误的方法中。如果你能用上面的上下文解释这个会很有帮助。

4

1 回答 1

1

简单回答

  1. 是的
  2. 是/否

细节

  1. 您可以在运行时加载任何 java 类,通常这是通过Classloader完成的
  2. 所有静态变量实际上都是由 JVM(不是您)在运行时分配和初始化的,通常在您使用它们之前,请查看这个答案:Java 中静态变量的初始化顺序

您也可以使用新值/内存重新分配代码中的非最终静态变量,例如:

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 中不行

于 2013-11-03T07:05:56.000 回答