2013-11-03 44 views
0

我是新来的Java,我想了解JVM的工作顺序。我有以下查询。静态变量可以在运行时分配内存

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

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

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

可能是,如果你可以用下面给出一个例子来解释我:

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

在这个例子中的静态方法里面写,这将给一个error.It将是有益的,如果你能解释一下这与上述背景有关。

回答

1

简单地回答

  1. 是/否

细节

  1. 可以在运行时加载任何Java类,通常这是通过Classloader
  2. 完成所有的静态变量实际上被分配一个第二通过运行时JVM(不包括你)初始化,您使用它们通常只是之前,看看这个答案:Order of initialization of static variable in 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