JustAnotherGuyInWeb
@JustAnotherGuyInWeb
Студент :(

Зачем при иницализации static переменных, требующих вычисления, требуется static блок?

Сейчас учу Java по книге Шилдта. Дошел до ключевого слова static. Там сказано, что если для инициализации static переменных требудется произвести вычесления, то для этой цели обьявляется static блок.
class UseStatic{
static int a=3;
static int b;
static{
b=a*4;
}
}

Так вот вопрос, зачем так делать, если изменив класс на нечто такое, результат будет одинаковым?
class UseStatic{
static int a=3;
static int b=a*4;
}
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
Ну это у вас просто арифметические операции. А если нужно произвести более сложную инициализацию статического поля? Например с вызовом метода, который бросает исключение? Тогда это делается в статическом блоке.

Но лучше так не делать. Сложную инициализацию лучше выносить в отдельных приватный стат метод и его уже присваивать переменной.

static int a = intA();

private static int initA() {
...
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@IceJOKER
Web/Android developer
А что если вам нужно нечто большее, чем просто умножить числа?
К примеру статичный массив с данными?

stackoverflow.com/questions/2943556/static-block-i... - тут разные примеры и объяснения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы