Статическая переменная в Java:что такое статический блок и метод [пример]
Статика может быть:
- Статические переменные
- Статические методы
- Статические блоки кода.
Давайте сначала рассмотрим статические переменные и статические методы.
Что такое статическая переменная в Java?
Статическая переменная в Java это переменная, которая принадлежит классу и инициализируется только один раз в начале выполнения. Это переменная, которая принадлежит классу, а не объекту (экземпляру). Статические переменные инициализируются только один раз, в начале выполнения. Эти переменные будут инициализированы первыми, перед инициализацией любых переменных экземпляра.
- Одна копия для всех экземпляров класса.
- Доступ к статической переменной можно получить непосредственно по имени класса, и для нее не требуется никакого объекта
Синтаксис:
<class-name>.<variable-name>
Что такое статический метод в Java?
Статический метод в Java это метод, который принадлежит классу, а не объекту. Статический метод может получить доступ только к статическим данным. Это метод, который принадлежит классу, а не объекту (экземпляру). Статический метод может получить доступ только к статическим данным. Он не может получить доступ к нестатическим данным (переменным экземпляра).
- Статический метод может вызывать только другие статические методы и не может вызывать из него нестатические методы.
- Доступ к статическому методу можно получить непосредственно по имени класса, и ему не нужен какой-либо объект
- Статический метод никоим образом не может ссылаться на ключевые слова "this" или "super"
Синтаксис:
<class-name>.<method-name>
Примечание. main является статическим, поскольку он должен быть доступен для запуска приложения до того, как произойдет какое-либо создание экземпляра.
Давайте изучим нюансы статических ключевых слов, выполнив несколько упражнений!
Пример:как вызывать статические переменные и методы
Шаг 1) Скопируйте следующий код в редактор
public class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
//Student.b++;
//s1.showData();
}
}
class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.
Student(){
//Constructor incrementing static variable b
b++;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
//public static void increment(){
//a++;
//}
} Шаг 2) Сохраните и скомпилируйте код. Запустите код как демонстрационная версия Java. .
Шаг 3) Ожидаемый результат показан ниже
На следующей диаграмме показано, как создаются ссылочные переменные и объекты, а к статическим переменным обращаются различные экземпляры.
Шаг 4) Доступ к статической переменной можно получить извне класса, используя синтаксис ИмяКласса.Имя_Переменной. . Раскомментируйте строки # 7 и 8 . Сохраните, скомпилируйте и запустите. Наблюдайте за выводом.
Value of a = 0 Value of b = 1 Value of a = 0 Value of b = 2 Value of a = 0 Value of b = 3
Шаг 5) Раскомментируйте строки 25,26 и 27. Сохраните, скомпилируйте и запустите.
error: non-static variable a cannot be referenced from a static context a++;
Шаг 6) Ошибка =? Это связано с тем, что невозможно получить доступ к переменной экземпляра «a " из метода статического класса Java "инкремент “.
Что такое статический блок в Java?
статический блок представляет собой блок операторов внутри класса Java, который будет выполняться при первой загрузке класса в JVM. Статический блок помогает инициализировать статические элементы данных. , точно так же, как конструкторы помогают инициализировать элементы экземпляра.
class Test{
static {
//Code goes here
}
}
Следующая программа является примером статического блока Java.
Пример:как получить доступ к статическому блоку
public class Demo {
static int a;
static int b;
static {
a = 10;
b = 20;
}
public static void main(String args[]) {
System.out.println("Value of a = " + a);
System.out.println("Value of b = " + b);
}
} вы получите следующий вывод программы.
Value of a = 10 Value of b = 20
java