Static Keyword in Java

Das Keyword „static“ in Java wird häufig in der Java-Programmierung verwendet. Das static Keyword in Java wird genutzt, um eine Klassenlevel-Variable in Java zu erstellen. Static Variablen und Methoden sind Teil der Klasse, nicht der Instanzen der Klasse.

Verwendung des static Keywords in Java

Java static, static Keyword in JavaJava static Keyword kann in fünf Bereichen verwendet werden.

  1. static Variablen
    static int count;
  2. static Methoden
    static void foo() {}
  3. static Block
    static{
    //etwas Code
    }
  4. static innere Klasse
    class Test {
    static class InnerStatic{}
    }
  5. Interface static Methode (ab Java 8)

Wir werden hier vier davon besprechen.

Java Static Variable

Wir können das static Keyword mit einer Klassenlevel-Variable verwenden. Eine static Variable ist eine Klassenvariable und gehört nicht zum Objekt/Instanz der Klasse. Da static Variablen über alle Instanzen des Objekts geteilt werden, sind sie nicht threadsicher. Normalerweise werden static Variablen zusammen mit dem Keyword final für gemeinsame Ressourcen oder Konstanten verwendet, die von allen Objekten genutzt werden können. Wenn die static Variable nicht privat ist, können wir darauf mit ClassName.variableName zugreifen

        //Beispiel für eine static Variable
        private static int count;
        public static String str;
        public static final String DB_USER = "myuser";

Java Static Methode

Genauso wie die static Variable gehört die static Methode zur Klasse und nicht zu Klasseninstanzen. Eine static Methode kann nur auf static Variablen der Klasse zugreifen und nur static Methoden der Klasse aufrufen. Normalerweise sind static Methoden Dienstprogrammmethoden, die wir anderen Klassen zur Verwendung freigeben möchten, ohne eine Instanz erstellen zu müssen. Zum Beispiel Collections-Klasse. Java-Wrapperklassen und Dienstprogrammklassen enthalten viele static Methoden. Die main()-Methode, die der Einstiegspunkt eines Java-Programms ist, ist ebenfalls eine static Methode.

        //Beispiel für eine static Methode
        public static void setCount(int count) {
            if(count > 0)
            StaticExample.count = count;
        }
        
        //statische Dienstprogrammmethode
        public static int addInts(int i, int...js){
            int sum=i;
            for(int x : js) sum+=x;
            return sum;
        }

Ab Java 8 können wir auch static Methoden in Interfaces haben.

Java Static Block

Der Java static Block ist die Gruppe von Anweisungen, die ausgeführt wird, wenn die Klasse vom Java ClassLoader in den Speicher geladen wird. Der static Block wird verwendet, um die static Variablen der Klasse zu initialisieren. Meistens wird er verwendet, um static Ressourcen zu erstellen, wenn die Klasse geladen wird. Wir können in einem static Block nicht auf nicht-static Variablen zugreifen. Wir können mehrere static Blöcke in einer Klasse haben, obwohl das nicht viel Sinn macht. Der Code des static Blocks wird nur einmal ausgeführt, wenn die Klasse in den Speicher geladen wird.

        static{
            //kann verwendet werden, um Ressourcen zu initialisieren, wenn die Klasse geladen wird
            System.out.println("StaticExample static block");
            //kann nur auf static Variablen und Methoden zugreifen
            str="Test";
            setCount(2);
        }

Java Static Klasse

Wir können das static Keyword mit verschachtelten Klassen verwenden. Das static Keyword kann nicht mit Top-Level-Klassen verwendet werden. Eine static verschachtelte Klasse ist genauso wie jede andere Top-Level-Klasse und ist nur aus Gründen der Verpackung verschachtelt. Lesen Sie: Java Verschachtelte Klassen

Beispielprogramm: StaticExample.java

        package com.journaldev.misc;

        public class StaticExample {

            //static block
            static{
                //kann verwendet werden, um Ressourcen zu initialisieren, wenn die Klasse geladen wird
                System.out.println("StaticExample static block");
                //kann nur auf static Variablen und Methoden zugreifen
                str="Test";
                setCount(2);
            }
            
            //mehrere static Blöcke in derselben Klasse
            static{
                System.out.println("StaticExample static block2");
            }
            
            //Beispiel für eine static Variable
            private static int count; //privat gehalten, um seinen Wert über Setter zu steuern
            public static String str;
            
            public int getCount() {
                return count;
            }

            //Beispiel für eine static Methode
            public static void setCount(int count) {
                if(count > 0)
                StaticExample.count = count;
            }
            
            //statische Dienstprogrammmethode
            public static int addInts(int i, int...js){
                int sum=i;
                for(int x : js) sum+=x;
                return sum;
            }

            //Beispiel für eine static Klasse - nur aus Verpackungsgründen verwendet
            public static class MyStaticClass{
                public int count;
                
            }

        }

Beispiel Testprogramm: TestStatic.java

        package com.journaldev.misc;

        public class TestStatic {

            public static void main(String[] args) {
                StaticExample.setCount(5);
                
                //nicht-private static Variablen können mit dem Klassennamen zugegriffen werden
                StaticExample.str = "abc";
                StaticExample se = new StaticExample();
                System.out.println(se.getCount());
                //Klassen- und Instanzstatic Variablen sind gleich
                System.out.println(StaticExample.str +" ist dasselbe wie "+se.str);
                System.out.println(StaticExample.str == se.str);
                
                //static verschachtelte Klassen sind wie normale Top-Level-Klassen
                StaticExample.MyStaticClass myStaticClass = new StaticExample.MyStaticClass();
                myStaticClass.count=10;
                
                StaticExample.MyStaticClass myStaticClass1 = ein neuer StaticExample.MyStaticClass();
                myStaticClass1.count=20;
                
                System.out.println(myStaticClass.count);
                System.out.println(myStaticClass1.count);
            }
            
        }

Die Ausgabe des obigen Beispiels für das static Keyword in Java ist:

StaticExample static block

StaticExample static block2

5

abc ist dasselbe wie abc

true

10

20

Beachten Sie, dass der Code des static Blocks zuerst und nur einmal ausgeführt wird, sobald die Klasse in den Speicher geladen wird. Die anderen Ausgaben sind selbsterklärend.

Java Static Import

Normalerweise greifen wir auf static Mitglieder unter Verwendung des Klassennamens zu. Ab Java 1.5 können wir den Java static Import verwenden, um den Klassennamen zu vermeiden. Unten ist ein einfaches Beispiel für Java static Import.

        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); //normalerweise A.MAX
                foo(); // normalerweise A.foo()
            }
        }

Beachten Sie die Importanweisungen, für static Import müssen wir import static gefolgt vom voll qualifizierten static Mitglied einer Klasse verwenden. Um alle static Mitglieder einer Klasse zu importieren, können wir * wie in import static com.journaldev.test.A.*; verwenden. Wir sollten es in dieser Anleitung nur verwenden, wenn wir das static Mitglied einer Klasse mehrmals verwenden, es ist nicht gut für die Lesbarkeit.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: