Рубрики
Без рубрики

статическое ключевое слово в java

статическое ключевое слово в java. что такое статика в java? Статический класс Java, статический метод java, статическая переменная java, статический блок java, статический импорт java, класс

Автор оригинала: Pankaj Kumar.

ключевое слово static в Java часто используется в программировании на Java. Ключевое слово Java static используется для создания переменной уровня класса в java. статические переменные и методы являются частью класса, а не экземплярами класса.

статическое ключевое слово в java

Ключевое слово Java static может использоваться в пяти случаях, как показано на рисунке ниже.

Мы обсудим здесь четыре из них, пятый был представлен в Java 8 и обсуждался в разделе Изменения интерфейса Java 8 .

  1. Статическая переменная Java

    Мы можем использовать ключевое слово static с переменной уровня класса. Статическая переменная является переменной класса и не принадлежит объекту/экземпляру класса.

    Поскольку статические переменные являются общими для всех экземпляров объекта, они не являются потокобезопасными .

    Обычно статические переменные используются с ключевым словом final для общих ресурсов или констант, которые могут использоваться всеми объектами. Если статическая переменная не является частной, мы можем получить к ней доступ с помощью className.variableName

  2. Статический метод Java

    Так же, как и статическая переменная, статический метод принадлежит классу, а не экземплярам класса.

    Статический метод может обращаться только к статическим переменным класса и вызывать только статические методы класса.

    Обычно статические методы-это служебные методы, которые мы хотим предоставить для использования другими классами без необходимости создания экземпляра. Например Класс коллекций .

    Классы-оболочки Java и служебные классы содержат множество статических методов. Метод main (), который является точкой входа в саму программу java, является статическим методом.

    Начиная с Java 8 и далее, мы также можем использовать статические методы в интерфейсах. Для получения более подробной информации, пожалуйста, прочитайте Изменения интерфейса Java 8 .

  3. Статический блок Java

    Статический блок Java – это группа операторов, которая выполняется, когда класс загружается в память с помощью загрузчика классов Java .

    Статический блок используется для инициализации статических переменных класса. В основном он используется для создания статических ресурсов при загрузке класса.

    Мы не можем получить доступ к нестатическим переменным в статическом блоке. У нас может быть несколько статических блоков в классе, хотя в этом нет особого смысла. Статический блочный код выполняется только один раз, когда класс загружается в память.

  4. Статический класс 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, вы должны посмотреть его ниже.