Maison > Java > JavaBase > qu'est-ce que Java statique

qu'est-ce que Java statique

angryTom
Libérer: 2019-11-13 13:39:14
original
3287 Les gens l'ont consulté

qu'est-ce que Java statique

Qu'est-ce que Java static

Java static comprend des variables statiques, des méthodes statiques et des blocs d'initialisation statiques, ce qui suit est une explication détaillée de la statique. (Tutoriel recommandé : tutoriel Java)

1. Qu'est-ce qu'une variable statique

Comme nous le savons tous, nous pouvons créer plusieurs de ces variables en fonction sur une classe Objets de classe, chaque objet a ses propres membres, indépendants les uns des autres.

Cependant, parfois, nous préférons que tous les objets de cette classe partagent le même membre. C’est à ce moment-là que la statique entre en jeu !

Les membres modifiés par static en Java sont appelés membres statiques ou membres de classe. Il appartient à la classe entière et non à un objet, c'est-à-dire qu'il est partagé par tous les objets de la classe.

Les membres statiques sont accessibles directement en utilisant le nom de la classe, ou ils sont accessibles en utilisant le nom de l'objet. Bien entendu, compte tenu de la particularité de son rôle, il est recommandé d'utiliser des noms de classes pour accéder à

. Utiliser static pour modifier les variables, les méthodes et les blocs de code.

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);
    }
}
Copier après la connexion

Résultats d'exécution :

通过类名访问hobby:Tedu
使用对象名访hobby:Tedu
通过类名访问hobby:cjj
Copier après la connexion

Remarque :

Les membres statiques appartiennent à la classe entière Lorsque le système utilise la classe pour la première fois, il allouera de l'espace mémoire jusqu'à ce que. les ressources ne seront recyclées qu'une fois la classe déchargée !

2. Méthodes statiques utilisées par les

Commes les variables statiques, nous pouvons également utiliser des méthodes statiques modifiées, appelées méthodes statiques ou méthodes de classe.

En fait, la méthode principale que nous avons écrite auparavant est une méthode statique

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();
    }
}
Copier après la connexion

Copier le code

欢迎你:Cjj!
欢迎你:Cjj!
Copier après la connexion

Remarque :

1. appeler directement des méthodes similaires Membres statiques dans , mais les membres non statiques ne peuvent pas être appelés directement. Par exemple :

Si vous souhaitez appeler des variables non statiques dans une méthode statique, vous pouvez créer un objet de la classe puis accéder aux variables non statiques via l'objet. Par exemple :

2. Dans les méthodes membres ordinaires, vous pouvez accéder directement aux variables non statiques et aux variables statiques du même type, telles que :

3. appelé dans les méthodes statiques. Accédez aux méthodes non statiques via des objets. Par exemple :

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();
    }
}
Copier après la connexion

3. Le bloc d'initialisation statique utilisé par

statique peut être effectué via un bloc d'initialisation en Java. Par exemple :

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

Exécutez ces blocs de code dans l'ordre. Si un bloc d’initialisation est modifié avec static, on l’appelle un bloc d’initialisation statique.

Remarque :

Le bloc d'initialisation statique n'est exécuté que lorsque la classe est chargée, et ne sera exécuté qu'une seule fois. Dans le même temps, le bloc d'initialisation statique ne peut attribuer des valeurs qu'à. variables statiques et ne peut pas initialiser les variables membres ordinaires.

Regardons un morceau de code :

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);
        
    }
}
Copier après la connexion

Résultat d'exécution :

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

En sortant le résultat, nous pouvons voir que le bloc d'initialisation statique est exécuté en premier lorsque le programme est en cours d'exécution, puis le bloc d'initialisation normal est exécuté et la méthode constructeur est exécutée en dernier. Étant donné que le bloc d'initialisation statique n'est exécuté qu'une seule fois lors du chargement de la classe, le bloc d'initialisation statique n'est pas exécuté lorsque l'objet hello2 est à nouveau créé.

La classe est chargée lors de la première utilisation et ne sera pas supprimée après le chargement.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal