Блок загрженного в JVM класса, который вызывается только один раз до вызова конструктора класса или его метода мейн. Тоесть если мы создаем инстанцию класса, то только в этот момент будет вызван этот блок, все последующие создания обьектов уже этот блок вызывать не будут, таже история с методом мейн.
Правила:
Используется это для:
Правила:
- Код пишется в блоке static { }, который ставится в пределах класса.
- Блок ничего не возвращает -
return. - Никаких обращений к инстанции -
this,super. - Может выкидывать только Unchecked Exceptions( инстанции классов RuntimeException, Error и их наследники).
Используется это для:
- Загрузка драйверов и другого в пространство имен (For example ‘Class.forName(“com.mysql.jdbc.Driver”)’).
- Проинициализировать сложные статические поля класса один раз(final static).
- Логирование.
- Создание и распарсивание подготовленных SQL-выражений.
class Loader {
static final String theName = "The Loader";
static {
System.out.println("Loader.static");
}
Loader() {
System.out.println("Loader.Loader()");
}
}
class Test extends Loader {
final static Integer i;
static {
System.out.println( "Test.static");
i = new Integer(5);
}
{
System.out.println( "Test.non-static");
}
Test() {
System.out.println( "Test.Test()");
}
public static void main( String [] args ) {
System.out.println( "Test.main");
Test t = new Test();
Test t2 = new Test();
Test t3 = new Test();
System.exit(0);
}
}
Loader.static Test.static Test.main Loader.Loader() Test.non-static Test.Test() Loader.Loader() Test.non-static Test.Test() Loader.Loader() Test.non-static Test.Test()
Комментариев нет:
Отправить комментарий