2013-11-03 2 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. Да
  2. Да/Нет

детали

  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

Смежные вопросы