static-Schlüsselwort in Java wird in der Java-Programmierung häufig verwendet. Das Java static-Schlüsselwort wird verwendet, um eine Klassenvariante in Java zu erstellen. Statische Variablen und Methoden gehören zur Klasse, nicht zu den Instanzen der Klasse.
statisches Schlüsselwort in Java
Java static-Schlüsselwort kann in fünf Fällen verwendet werden, wie im untenstehenden Bild gezeigt.
Wir werden vier davon hier besprechen, der fünfte wurde in Java 8 eingeführt und wurde in Java 8-Schnittstellenänderungen behandelt.
-
Java-Statistikvariable
Mit dem Schlüsselwort
static
können wir eine Klassenvariabl nutzen. Eine statische Variable ist eine Klassenvariable und gehört nicht zu einem Objekt/Instanz der Klasse. Da statische Variablen über alle Instanzen des Objekts hinweg gemeinsam genutzt werden, sind sie nicht thread-sicher. Normalerweise werden statische Variablen zusammen mit dem Schlüsselwortfinal
für gemeinsame Ressourcen oder Konstanten verwendet, die von allen Objekten genutzt werden können. Wenn die statische Variable nicht privat ist, kann sie mitKlassenname.Variablenname
aufgerufen werden.// Beispiel für eine statische Variable private static int count; public static String str; public static final String DB_USER = "myuser";
-
Java-Static-Methode
Genau wie statische Variable gehören statische Methoden zur Klasse und nicht zu Instanzen der Klasse. Eine statische Methode kann nur auf statische Variablen der Klasse zugreifen und nur statische Methoden der Klasse aufrufen. Normalerweise sind statische Methoden Dienstprogrammmethoden, die wir anderen Klassen zugänglich machen möchten, ohne eine Instanz erstellen zu müssen. Zum Beispiel die Collections-Klasse. Java-Wrapper-Klassen und Dienstprogrammklassen enthalten viele statische Methoden. Die main()-Methode, die der Einstiegspunkt eines Java-Programms ist, selbst ist eine statische Methode.
// Beispiel für eine statische Methode public static void setCount(int count) { if(count > 0) StaticExample.count = count; } // Statische Hilfsmethode 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 statische Methoden in Schnittstellen haben. Für weitere Details lesen Sie bitte Java 8 Schnittstellenänderungen.
-
Java-Static-Block
Java-Static-Block ist die Gruppe von Anweisungen, die ausgeführt wird, wenn die Klasse vom Java ClassLoader in den Speicher geladen wird. Der statische Block wird verwendet, um die statischen Variablen der Klasse zu initialisieren. Meistens wird er verwendet, um statische Ressourcen zu erstellen, wenn die Klasse geladen wird. In einem statischen Block können keine nicht-statischen Variablen aufgerufen werden. Es können mehrere statische Blöcke in einer Klasse vorhanden sein, obwohl dies nicht viel Sinn macht. Der Code im statischen Block 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 statische Variablen und Methoden zugreifen str="Test"; setCount(2); }
-
Java Static Class
Wir können das Schlüsselwort „static“ mit verschachtelten Klassen verwenden. Das Schlüsselwort „static“ kann nicht mit Top-Level-Klassen verwendet werden. Eine statische verschachtelte Klasse ist genauso wie jede andere Top-Level-Klasse und wird nur aus Verpackungsgründen verschachtelt. Lesen Sie: Java Nested Classes
Lassen Sie uns alle Verwendungen des statischen Schlüsselworts in Java anhand eines Beispiels betrachten. StaticExample.java
package com.journaldev.misc;
public class StaticExample {
//statischer Block
static{
//kann verwendet werden, um Ressourcen zu initialisieren, wenn die Klasse geladen wird
System.out.println("StaticExample static block");
//kann nur auf statische Variablen und Methoden zugreifen
str="Test";
setCount(2);
}
//mehrere statische Blöcke in derselben Klasse
static{
System.out.println("StaticExample static block2");
}
//Beispiel für statische Variable
private static int count; //kept private to control its value through setter
public static String str;
public int getCount() {
return count;
}
//Beispiel für statische Methode
public static void setCount(int count) {
if(count > 0)
StaticExample.count = count;
}
//statische Hilfsmethode
public static int addInts(int i, int...js){
int sum=i;
for(int x : js) sum+=x;
return sum;
}
//Beispiel für statische Klasse - nur für die Verpackungskomfort verwendet
public static class MyStaticClass{
public int count;
}
}
Lassen Sie uns sehen, wie man statische Variable, Methode und statische Klasse in einem Testprogramm verwendet. TestStatic.java
package com.journaldev.misc;
public class TestStatic {
public static void main(String[] args) {
StaticExample.setCount(5);
//nicht-private statische Variablen können mit Klassenname zugegriffen werden
StaticExample.str = "abc";
StaticExample se = new StaticExample();
System.out.println(se.getCount());
//Klassen- und Instanzstatikvariablen sind gleich
System.out.println(StaticExample.str +" is same as "+se.str);
System.out.println(StaticExample.str == se.str);
//Statische geschachtelte Klassen sind wie normale Top-Level-Klassen
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);
}
}
Die Ausgabe des obigen Beispiels für das statische Schlüsselwort in Java ist:
StaticExample static block
StaticExample static block2
5
abc is same as abc
true
10
20
Beachten Sie, dass der Code des statischen Blocks zuerst und nur einmal ausgeführt wird, sobald die Klasse in den Speicher geladen wird. Die anderen Ausgaben sind selbsterklärend.
Java statischer Import
Normalerweise greifen wir auf statische Elemente über die Klassenreferenz zu. Ab Java 1.5 können wir jedoch mit dem statischen Import von Java auf die Klassenreferenz verzichten. Im Folgenden finden Sie ein einfaches Beispiel für den statischen Import in 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()
}
}
Beachten Sie die Import-Anweisungen: Für den statischen Import verwenden wir import static
, gefolgt von dem vollständig qualifizierten statischen Element einer Klasse. Um alle statischen Elemente einer Klasse zu importieren, können wir * verwenden, wie in import static com.journaldev.test.A.*;
. Wir sollten dies nur verwenden, wenn wir die statische Variable einer Klasse mehrmals verwenden, da dies die Lesbarkeit beeinträchtigen kann. Aktualisierung: Ich habe kürzlich ein Video erstellt, um das statische Schlüsselwort in Java zu erklären. Sie sollten es sich unten ansehen. https://www.youtube.com/watch?v=2e-l1vb\_fwM
Source:
https://www.digitalocean.com/community/tutorials/static-keyword-in-java