Heim  >  Artikel  >  Java  >  Was ist Java-Statik?

Was ist Java-Statik?

angryTom
angryTomOriginal
2019-11-13 13:39:143269Durchsuche

Was ist Java-Statik?

Was ist Java-Static?

Java-Static umfasst statische Variablen, statische Methoden und statische Initialisierungsblöcke Im Folgenden finden Sie eine detaillierte Erläuterung der statischen Aufladung. (Empfohlenes Tutorial: Java-Tutorial)

1. Was ist eine statische Variable?

Wie wir alle wissen, können wir mehrere solcher Variablen erstellen Bei einem Klassenobjekt hat jedes Objekt seine eigenen, voneinander unabhängigen Mitglieder.

Manchmal bevorzugen wir jedoch, dass alle Objekte dieser Klasse dasselbe Mitglied haben. Hier kommt die statische Aufladung ins Spiel!

In Java durch Statik geänderte Mitglieder werden als statische Mitglieder oder Klassenmitglieder bezeichnet. Es gehört zur gesamten Klasse, nicht zu einem Objekt, das heißt, es wird von allen Objekten der Klasse gemeinsam genutzt.

Auf statische Mitglieder kann direkt über den Klassennamen oder über den Objektnamen zugegriffen werden. Aufgrund der besonderen Art seiner Funktion wird natürlich empfohlen, Klassennamen für den Zugriff zu verwenden

Verwenden Sie statisch, um Variablen, Methoden und Codeblöcke zu ändern.

public class Test1 {
    // static修饰的变量为静态变量,所有类的对象共享hobby
    static String hobby = "Tedu";
    
    public static void main(String[] args) {
        // 静态变量可以直接使用类名来访问,无需创建对象
        System.out.println("通过类名访问hobby:" + Test1.hobby);
        // 创建类的对象
        Test1 t1 = new Test1();
        // 使用对象名访问静态变量
        System.out.println("使用对象名访hobby:" + t1.hobby);
        // 使用对象名的形式修改静态变量的值
        t1.hobby = "cjj";
        // 再次使用类名访问静态白变量,值已经被修改
        System.out.println("通过类名访问hobby:" + Test1.hobby);
    }
}

Laufendes Ergebnis:

通过类名访问hobby:Tedu
使用对象名访hobby:Tedu
通过类名访问hobby:cjj

Hinweis:

Statische Mitglieder gehören zur gesamten Klasse, bis das System Speicherplatz zuweist Die Ressourcen werden erst recycelt, nachdem die Klasse entladen wurde!

2. Statische Methoden, die von statischen

verwendet werden. Wie statische Variablen können wir auch statische modifizierte Methoden verwenden, die als statische Methoden oder Klassenmethoden bezeichnet werden.

Tatsächlich ist die Hauptmethode, die wir zuvor geschrieben haben, eine statische Methode

public class Test01 {
    //使用static关键字声明静态方法
    public static void print() {
        System.out.println("欢迎你:Cjj!");
    }
    
    public static void main(String[] args) {
        //直接使用类名调用静态方法
        Test01.print();
        //也可以通过对象名调用,当然更推荐使用类名调用
        Test01 t1 = new Test01();
        t1.print();
    }
}

Code kopieren

欢迎你:Cjj!
欢迎你:Cjj!

Hinweis:

1 Rufen Sie ähnliche Methoden in statischen Methoden auf. Statische Mitglieder in , aber nicht statische Mitglieder können nicht direkt aufgerufen werden. Beispiel:

Wenn Sie nicht statische Variablen in einer statischen Methode aufrufen möchten, können Sie ein Objekt der Klasse erstellen und dann über das Objekt auf die nicht statischen Variablen zugreifen. Beispiel:

2. In gewöhnlichen Mitgliedsmethoden können Sie direkt auf nicht statische Variablen zugreifen, z. B.:

3 In statischen Methoden aufgerufen. Greifen Sie über Objekte auf nicht statische Methoden zu. Zum Beispiel:

public class Test01 {
    String name = "Cjj"; //静态成员变量
    static String hobby = "study"; //非静态成员变量
    
    //普通成员方法
    public void print1() {
        System.out.println("普通成员方法~~~"); 
    }
    
    //静态成员方法
    public static void print2() {
        System.out.println("静态成员方法~~~");
    }
    
    public static void main(String[] args) {
        //普通成员方法必须通过对象来调用
        Test01 t1 = new Test01();
        t1.print1();
        //可以直接调用静态方法
        print2();
    }
}

3. Statischer Initialisierungsblock, der von statischen

Datenzuweisung verwendet wird, kann über einen Initialisierungsblock in Java erfolgen. Zum Beispiel:

public class Test02 {
    String name; // 定义一个成员变量
    //通过初始化块为成员变量赋值
    {
        name = "cjj";
    }
}

Führen Sie diese Codeblöcke nacheinander aus. Wenn ein Initialisierungsblock mit Static geändert wird, wird er als statischer Initialisierungsblock bezeichnet.

Hinweis:

Der statische Initialisierungsblock wird nur ausgeführt, wenn die Klasse geladen wird, und wird nur einmal ausgeführt. Gleichzeitig kann der statische Initialisierungsblock nur Werte zuweisen statische Variablen und können keine gewöhnlichen Mitgliedsvariablen initialisieren.

Schauen wir uns einen Code an:

public class Test02 {
    int num1;
    int num2;
    static int num3;
    public Test02() {// 构造方法
        num1 = 11;
        System.out.println("通过构造方法为变量num1赋值");
    }
    { // 初始化块
        num2 = 22;
        System.out.println("通过初始化块为变量num2赋值");
    }
    static {// 静态初始化块
        num3 = 33;
        System.out.println("通过静态初始化块为静态变量num3赋值");
    }
    
    public static void main(String[] args) {
        Test02 t1 = new Test02(); //创建对象
        System.out.println("num1:" + t1.num1);
        System.out.println("num2:" + t1.num2);
        System.out.println("num3:" + num3);
        
    }
}

Laufergebnis:

通过静态初始化块为静态变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
num1:11
num2:22
num3:33

Durch die Ausgabe des Ergebnisses können wir sehen, dass der statische Initialisierungsblock zuerst ausgeführt wird, wenn Das Programm wird ausgeführt, und dann wird der normale Initialisierungsblock ausgeführt, und die Konstruktormethode wird zuletzt ausgeführt. Da der statische Initialisierungsblock beim Laden der Klasse nur einmal ausgeführt wird, wird der statische Initialisierungsblock nicht ausgeführt, wenn das Objekt hello2 erneut erstellt wird.

Die Klasse wird bei der ersten Verwendung geladen und nach dem Laden nicht entfernt.

Das obige ist der detaillierte Inhalt vonWas ist Java-Statik?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn