Автор оригинала: Pankaj Kumar.
ключевое слово static в Java часто используется в программировании на Java. Ключевое слово Java static используется для создания переменной уровня класса в java. статические переменные и методы являются частью класса, а не экземплярами класса.
статическое ключевое слово в java
Ключевое слово Java static может использоваться в пяти случаях, как показано на рисунке ниже.
Мы обсудим здесь четыре из них, пятый был представлен в Java 8 и обсуждался в разделе Изменения интерфейса Java 8 .
Статическая переменная Java
Мы можем использовать ключевое слово
static
с переменной уровня класса. Статическая переменная является переменной класса и не принадлежит объекту/экземпляру класса.Поскольку статические переменные являются общими для всех экземпляров объекта, они не являются потокобезопасными .
Обычно статические переменные используются с ключевым словом final для общих ресурсов или констант, которые могут использоваться всеми объектами. Если статическая переменная не является частной, мы можем получить к ней доступ с помощью
className.variableName
Статический метод Java
Так же, как и статическая переменная, статический метод принадлежит классу, а не экземплярам класса.
Статический метод может обращаться только к статическим переменным класса и вызывать только статические методы класса.
Обычно статические методы-это служебные методы, которые мы хотим предоставить для использования другими классами без необходимости создания экземпляра. Например Класс коллекций .
Классы-оболочки Java и служебные классы содержат множество статических методов. Метод main (), который является точкой входа в саму программу java, является статическим методом.
Начиная с Java 8 и далее, мы также можем использовать статические методы в интерфейсах. Для получения более подробной информации, пожалуйста, прочитайте Изменения интерфейса Java 8 .
Статический блок Java
Статический блок Java – это группа операторов, которая выполняется, когда класс загружается в память с помощью загрузчика классов Java .
Статический блок используется для инициализации статических переменных класса. В основном он используется для создания статических ресурсов при загрузке класса.
Мы не можем получить доступ к нестатическим переменным в статическом блоке. У нас может быть несколько статических блоков в классе, хотя в этом нет особого смысла. Статический блочный код выполняется только один раз, когда класс загружается в память.
Статический класс Java
Мы можем использовать статическое ключевое слово с вложенными классами. ключевое слово static нельзя использовать с классами верхнего уровня.
Статический вложенный класс такой же, как и любой другой класс верхнего уровня, и вложен только для удобства упаковки.
Прочитайте: Вложенные классы Java
Давайте рассмотрим все статические ключевые слова в использовании java в примере программы.
Давайте рассмотрим все статические ключевые слова в использовании java в примере программы.
package com.journaldev.misc; public class StaticExample { //static block static{ //can be used to initialize resources when class is loaded System.out.println("StaticExample static block"); //can access only static variables and methods str="Test"; setCount(2); } //multiple static blocks in same class static{ System.out.println("StaticExample static block2"); } //static variable example private static int count; //kept private to control its value through setter public static String str; public int getCount() { return count; } //static method example public static void setCount(int count) { if(count > 0) StaticExample.count = count; } //static util method public static int addInts(int i, int...js){ int sum=i; for(int x : js) sum+=x; return sum; } //static class example - used for packaging convenience only public static class MyStaticClass{ public int count; } }
Давайте посмотрим, как использовать статическую переменную, метод и статический класс в тестовой программе.
Давайте посмотрим, как использовать статическую переменную, метод и статический класс в тестовой программе.
package com.journaldev.misc; public class TestStatic { public static void main(String[] args) { StaticExample.setCount(5); //non-private static variables can be accessed with class name StaticExample.str = "abc"; StaticExample se = new StaticExample(); System.out.println(se.getCount()); //class and instance static variables are same System.out.println(StaticExample.str +" is same as "+se.str); System.out.println(StaticExample.str == se.str); //static nested classes are like normal top-level classes StaticExample.MyStaticClass myStaticClass = new StaticExample.MyStaticClass(); myStaticClass.count=10; StaticExample.MyStaticClass myStaticClass1 = new StaticExample.MyStaticClass(); myStaticClass1.count=20; System.out.println(myStaticClass.count); System.out.println(myStaticClass1.count); } }
Вывод приведенного выше статического ключевого слова в примере программы java выглядит следующим образом:
StaticExample static block StaticExample static block2 5 abc is same as abc true 10 20
Обратите внимание, что статический блочный код выполняется первым и только один раз, как только класс загружается в память. Другие результаты не требуют пояснений.
Статический импорт Java
Обычно мы получаем доступ к статическим членам с помощью ссылки на класс, начиная с Java 1.5 мы можем использовать статический импорт java, чтобы избежать ссылки на класс. Ниже приведен простой пример статического импорта Java.
package com.journaldev.test; public class A { public static int MAX = 1000; public static void foo(){ System.out.println("foo static method"); } }
package com.journaldev.test; import static com.journaldev.test.A.MAX; import static com.journaldev.test.A.foo; public class B { public static void main(String args[]){ System.out.println(MAX); //normally A.MAX foo(); // normally A.foo() } }
Обратите внимание на инструкции import, для статического импорта мы должны использовать import static
, за которым следует полностью классифицированный статический член класса. Для импорта всех статических членов класса мы можем использовать*, как в import static com.journaldev.test.A.*;
. Мы должны использовать его только тогда, когда мы используем статическую переменную класса несколько раз, это плохо для удобства чтения.
Обновление : Я недавно создал видео, объясняющее ключевое слово static на java, вы должны посмотреть его ниже.