Heim  >  Artikel  >  Java  >  Drei Hauptfunktionen des statischen Schlüsselworts

Drei Hauptfunktionen des statischen Schlüsselworts

王林
王林nach vorne
2020-08-19 17:07:033487Durchsuche

Drei Hauptfunktionen des statischen Schlüsselworts

Die drei Hauptfunktionen des Schlüsselworts static:

(Empfohlenes Tutorial: Java-Einführungs-Tutorial)

statische statische Mitgliedsvariablen

statische statische Mitgliedsmethoden

statischer statischer Codeblock

Analyse:

1 . statische statische Mitgliedsvariable

Beschreibung: Wenn eine Mitgliedsvariable das Schlüsselwort static verwendet, gehört diese Variable nicht mehr zum Objekt selbst, sondern zu der Klasse, zu der sie gehört. Mehrere Objekte teilen dieselben Daten.

Codebeispiel:

Wir erstellen eine Student-Klasse und legen zwei statische Mitgliedsvariablen fest: Raumklassenzimmer und idCounter. Instanziieren Sie zwei Schülerobjekte eins und zwei in der main()-Methode und weisen Sie nur dem Raum des einen Objekts einen Wert zu. Beim Drucken werden Sie feststellen, dass der Wert von two.room mit dem Wert von one.room identisch ist .

Es ist ersichtlich, dass der Raum, da er das Schlüsselwort static verwendet, zur Klasse und nicht mehr zum Objekt selbst gehört und von mehreren Objekten gemeinsam genutzt werden kann. Da idCounter eine statische Variable ist und nur einmal initialisiert wird, erhöht sich die ID jedes erstellten Objekts um 1.

public class Demo01StaticField {
    public static void main(String[] args) {
        Student one=new Student("郭靖",19);
        Student two=new Student("黄蓉",16);
        one.room="101教室";
        System.out.println("姓名:"+one.getName()+",年龄:"
                +one.getAge()+",教室:"+one.room
                +",学号:"+one.getId());        //姓名:郭靖,年龄:19,教室:101教室,学号:1
        System.out.println("姓名:"+two.getName()
                +",年龄:"+two.getAge()+",教室:"+two.room
                +",学号:"+two.getId());        //姓名:黄蓉,年龄:16,教室:101教室,学号:2
    }
}
 
public class Student {
 
    private int id;             //学号
    private String name;        //姓名
    private int age;            //年龄
    static String room;         //所在教室
    private static int idCounter=0;     //学号计数器,每当new了一个新对象的时候,计数器++
 
    public Student() {
        this.id= ++idCounter;
    }
 
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        this.id= ++idCounter;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    //name和age的Getter,Setter方法同上id,省略
}

2. Statische statische Mitgliedsmethode

Erläuterung: Wenn eine Mitgliedsmethode das Schlüsselwort static verwendet, wird dies ebenfalls zu einer statischen Methode. Statische Methoden gehören nicht zu Objekten, sondern zu Klassen.

Vorteile statisch modifizierter Mitgliedsmethoden: Sie vermeiden die Umständlichkeit und den Ressourcenverbrauch neuer Objekte und können direkt über [Name der Klassenmethode] verwendet werden.

Codebeispiel:

Erstellen Sie eine neue Myclass-Klasse, die über eine Mitgliedsvariable, eine statische Mitgliedsvariable, eine Mitgliedsmethode und eine statische Mitgliedsmethode verfügt. Wir können sehen, dass Mitgliedsmethoden sowohl auf Mitgliedsvariablen als auch auf statische Variablen zugreifen können. Statische Methoden können nur auf statische Variablen zugreifen, nicht auf nicht statische Variablen und können nicht das Schlüsselwort this verwenden. Wenn Sie diese Klasse mit dem Schlüsselwort static verwenden, müssen Sie kein Objekt erstellen, sondern können es direkt über den Klassennamen verwenden. Bei statischen Methoden dieser Klasse kann der Klassenname weggelassen werden.

public class Demo02StaticMethod {
    public static void main(String[] args) {
 
        //非静态方法使用:1.首先创建对象
        MyClass obj=new MyClass();
        //2.然后才能使用没有static关键字的方法
        obj.method();
 
        //对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用。
        obj.methodStatic();     //正确,不推荐,这种写法也会被javac翻译成“类名称.静态方法名”
        MyClass.methodStatic(); //正确,推荐
 
        //对于本类当中的静态方法,可以省略类名称
        myMethod();
        Demo02StaticMethod.myMethod();      //完全等效
 
    }
    public static void myMethod(){
        System.out.println("自己的方法!");
    }
}
public class MyClass {
 
    int num;        //成员变量
    static int numStatic;       //静态变量
 
    //成员方法
    public void method(){
        System.out.println("这是一个普通的成员方法。");
        //成员方法可以访问成员变量
        System.out.println(num);
        //成员方法可以访问静态变量
        System.out.println(numStatic);
    }
 
    //静态方法
    public static void methodStatic(){
        System.out.println("这是一个普通的静态方法。");
        //静态方法可以访问静态变量
        System.out.println(numStatic);
        //静态不能直接访问非静态【重点】
        //System.out.println(num);        //错误写法
        //静态方法中不能使用this关键字
        //System.out.println(this);        //错误写法
    }
}

(Lernvideo-Empfehlung: Java-Kurs)

3. statischer statischer Codeblock

Format:

public class 类名称{    
   static{                      
       //静态代码块的内容                
   }
}

Funktionen: Wenn diese Klasse zum ersten Mal verwendet wird, wird der statische Codeblock nur einmal ausgeführt kann zur Optimierung der Programmleistung verwendet werden. In den meisten Fällen werden wir Code für einige Initialisierungsvorgänge (Initialisierung statischer Ressourcen) platzieren, der nur einmal in einem statischen Codeblock ausgeführt wird, z. B. das Laden von Konfigurationsdateien usw. Hinweis: Statischer Inhalt hat immer Vorrang vor nicht statischem Inhalt, daher werden statische Codeblöcke vor Konstruktoren ausgeführt.

public class Demo04StaticCode {
    public static void main(String[] args) {
        Person one=new Person();
        System.out.println("************************");
        //无论创建几个Person对象,静态代码块只执行一次
        Person two=new Person();
    }
}
public class Person {
 
    static{
        System.out.println("静态代码块执行!");
    }
 
    public Person() {
        System.out.println("构造方法执行!");
    }
}

Ausführungsergebnis:

Drei Hauptfunktionen des statischen Schlüsselworts

Das obige ist der detaillierte Inhalt vonDrei Hauptfunktionen des statischen Schlüsselworts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen