Maison  >  Article  >  Java  >  Trois fonctions majeures du mot-clé static

Trois fonctions majeures du mot-clé static

王林
王林avant
2020-08-19 17:07:033427parcourir

Trois fonctions majeures du mot-clé static

Les trois fonctions majeures du mot-clé static :

(Tutoriel recommandé : Tutoriel d'introduction à Java)

membre statique statique variable

méthode de membre statique statique

bloc de code statique statique

Analyse :

Variable de membre statique statique

Description : Si a Si la variable membre utilise le mot-clé static, alors la variable n'appartient plus à l'objet lui-même, mais à la classe à laquelle elle appartient. Plusieurs objets partagent les mêmes données.

Exemple de code :

Nous construisons une classe Student et définissons deux variables membres statiques : room class et idCounter. Instanciez deux objets étudiants un et deux dans la méthode main() et attribuez une valeur uniquement à la pièce d'un objet. Lors de l'impression, vous constaterez que la valeur de two.room est la même que la valeur de one.room. .

On peut voir que parce que room utilise le mot-clé static, il appartient à la classe et n'appartient plus à l'objet lui-même, et peut être partagé par plusieurs objets. Étant donné que idCounter est une variable statique et ne sera initialisé qu'une seule fois, l'ID de chaque objet créé augmentera de 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. Méthode membre statique statique

Explication : Si une méthode membre utilise le mot-clé static, de la même manière, cela devient une méthode statique. Les méthodes statiques n'appartiennent pas à des objets, mais à des classes.

Avantages des méthodes de membres modifiées statiques : elles évitent la lourdeur et la consommation de ressources des nouveaux objets et peuvent être utilisées directement via [nom de la classe nom de la méthode].

Exemple de code :

Créez une nouvelle classe Myclass, qui a une variable membre, une variable membre statique, une méthode membre et une méthode membre statique. Nous pouvons voir que les méthodes membres peuvent accéder à la fois aux variables membres et aux variables statiques. Les méthodes statiques ne peuvent accéder qu'aux variables statiques, ne peuvent pas accéder aux variables non statiques et ne peuvent pas utiliser le mot clé this. Lorsque vous utilisez cette classe, avec le mot-clé static, vous n'avez pas besoin de créer un objet, vous pouvez l'utiliser directement via le nom de la classe. Pour les méthodes statiques de cette classe, le nom de la classe peut être omis.

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);        //错误写法
    }
}

(Recommandation vidéo d'apprentissage : cours Java)

3. Bloc de code statique statique

Format :

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

Caractéristiques : Lorsque cette classe est utilisée pour la première fois, le bloc de code statique n'est exécuté qu'une seule fois, ce qui peut être utilisé pour optimiser les performances du programme. Dans la plupart des cas, nous placerons certaines opérations d'initialisation (initialisation des ressources statiques) du code qui ne seront effectuées qu'une seule fois dans un bloc de code statique, comme le chargement de fichiers de configuration, etc. Remarque : Le contenu statique a toujours la priorité sur le contenu non statique, de sorte que les blocs de code statiques sont exécutés avant les constructeurs.

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("构造方法执行!");
    }
}

Résultat de l'exécution :

Trois fonctions majeures du mot-clé static

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer