Что происходит при обращении к статическим константам?

Например:
public class Solution {
	static final int С = 55 + 10;
	static final int A = 55 + 10;
}

class Solution2 {
	public static void main(String[] args) {
		System.out.println(Solution.C);
	}
}


Знаю, что класс Solution не был загружен в оперативную память и инициализирован. От сюда вопросы:
1. Все ли константы класса Solution были загружены в пул констант, или только C?
2. При повторном обращении к Solution.C будет проверено, есть ли она в пуле констант, и если есть то взято от туда уже инициализированное значение?

Или как это всё происходит?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, компилятор произведёт свёртку констант, поэтому в class-файле сложения не будет, C и A будут равны 65. Во-вторых, при обращении к любому статическому полю класс будет полностью загружен в metaspace и пул констант будет полностью инициализирован.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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