Статика в Java:
Статика - это модификатор отсутствия доступа. Ключевое слово static относится к классу, а не к экземпляру класса. может использоваться для прикрепления переменной или метода к классу.
Статическое ключевое слово МОЖЕТ использоваться с:
Метод
Переменная
Класс, вложенный в другой класс
Блок инициализации
НЕ МОЖЕТ использоваться с:
Класс (не вложенный)
Конструктор
Интерфейсы
Метод Локальный внутренний класс (отличие от вложенного класса)
Методы внутреннего класса
Переменные экземпляра
Локальные переменные
Пример:
Представьте себе следующий пример, в котором есть переменная экземпляра с именем count , которая увеличивается в конструкторе:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Вывод:
1 1 1
Поскольку переменная экземпляра получает память во время создания объекта, у каждого объекта будет копия переменной экземпляра, если она увеличивается, она не будет отражать к другим объектам.
Теперь, если мы изменим число переменных экземпляра на статическое , программа выдаст другой вывод:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Вывод:
1 2 3
В этом случае статическая переменная получит память только один раз, если какой-либо объект изменит значение статической переменной, он сохранит свое значение.
Static with Final:
Глобальная переменная, которая объявлена как final и static , остается неизменной для всего выполнения. Потому что статические члены хранятся в памяти классов и загружаются только один раз за все выполнение. Они являются общими для всех объектов класса. Если вы объявите статические переменные как окончательные, любой из объектов не сможет изменить их значение, поскольку оно является окончательным. Поэтому переменные, объявленные как final и static, иногда называют константами. Все поля интерфейсов называются константами, потому что они являются окончательными и статическими по умолчанию.
Изображение Ресурс: Окончательный статический
This looks like the debug from the logger itself. If you are using the XML config it looks like this:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
Turn the debug to false.
Помимо проверки наличия в вашем log4j.xml атрибута debug = "true"
, также убедитесь, что у вас нет log4j.debug
набор системных параметров (в Eclipse это будет отображаться в конфигурации запуска как аргумент JVM со значением -Dlog4j.debug
).