Статический блок в Java [дубликат]
этот вопрос уже есть ответ здесь:
статический инициализатор в Java
9 ответов
Я просматривал какой-то код на днях и наткнулся:
static {
...
}
иду от C++, я понятия не имел, почему это было там. Это не ошибка, потому что код скомпилирован нормально. Что это за "статический" блок код?
7 ответов:
Это статический инициализатор. Он выполняется, когда класс загружен (или инициализирован, если быть точным, но вы обычно не замечаете разницы).
ее можно рассматривать как "конструктор класса".
обратите внимание, что есть также экземпляр инициализаторы, которые выглядят одинаково, за исключением того, что у них нет
staticключевое слово. Те бегут кроме код в конструкторе, когда новый экземпляр объекта создан.
это статический инициализатор. Он выполняется, когда класс загружен и хорошее место для инициализации статических переменных.
от http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html
класс может иметь любое количество статических блоков инициализации, и они могут появляться в любом месте в теле класса. Система выполнения гарантирует, что статические блоки инициализации вызываются в том порядке, в котором они отображаются в источнике код.
Если у вас есть класс со статической картой поиска, он может выглядеть так
class MyClass { static Map<Double, String> labels; static { labels = new HashMap<Double, String>(); labels.put(5.5, "five and a half"); labels.put(7.1, "seven point 1"); } //... }это полезно, Так как статическое поле не может быть инициализирована с помощью
labels = .... Он должен как-то вызвать put-метод.
это блок кода, который выполняется, когда класс загружается с помощью загрузчика. Он предназначен для инициализации статических членов класса.
также можно написать нестатические инициализаторы, которые выглядят еще более странно:
public class Foo { { // This code will be executed before every constructor // but after the call to super() } Foo() { } }
статический блок может быть использован, чтобы показать, что программа может работать без главной функции.
//static block //static block is used to initlize static data member of the clas at the time of clas loading //static block is exeuted before the main class B { static { System.out.println("Welcome to Java"); System.exit(0); } }
статический блок выполняется один раз в жизненном цикле любой программы, другим свойством статического блока является то, что он выполняется перед основным методом.
статические блоки используются для инициализации кода и будут выполняться при загрузке JVM класса.Обратитесь к ссылке ниже, которая дает подробное объяснение. http://www.jusfortechies.com/java/core-java/static-blocks.php
да, статический блок используется для инициализации кода и он будет загружаться в момент запуска JVM для выполнения.
статический блок используется в предыдущих версиях Java, но в последней версии он не работает.
Comments