Maison >Java >javaDidacticiel >Introduction détaillée au mot-clé statique en Java

Introduction détaillée au mot-clé statique en Java

零下一度
零下一度original
2017-06-25 11:03:521723parcourir

Le mot-clé static en java a deux fonctions principales :

Première : Allouer un seul espace de stockage pour un type de données ou un objet spécifique, ce qui est différent de la création d'un objet .Le nombre n'a pas d'importance.

Deuxièmement, l'implémentation d'une méthode ou d'un attribut est associée à la classe plutôt qu'à l'objet

De manière simple, dans le langage Java, le statique inclut principalement les situations d'utilisation en 5 : variables membres, méthodes membres, blocs de code, classes internes et packages d'importation statique.

Utilisation de base :

  1. modification statique variable membre  : Cette variable membre est une variable de classe et peut être directement référencée via ClassName.attributeName sans An instance de nouvelle classe.

  2. modification statique méthode membre  : Cette méthode appartient à la méthode de la classe et peut être directement référencée via ClassName.methodName sans avoir besoin d'une nouvelle instance du classe.

  3. modification statique bloc de code  : exécuté une seule fois lorsque la classe est initialisée, et l'ordre de chargement est strictement conforme à l'ordre de définition des ressources statiques dans la classe ; static Un bloc de code peut attribuer des valeurs aux variables statiques définies après lui, mais ne peut pas y accéder. ;Bloc de code de classe parent->Bloc de code de sous-classe.

  4. modification statiqueclasse interne : static ne peut pas modifier les classes ordinaires, mais ne peut modifier que les classes internes. Comment créer une classe interne modifiée par static : nouveau OuterClass.InnerClass().

  5. staticImport package  : Syntaxe "import static java.lang.Math.*", pour que Math puisse être utilisé directement dans le class Les méthodes statiques dans une classe ne nécessitent pas d'écrire le nom de la classe. Personnellement, je pense que c'est plus pratique lorsqu'une certaine classe est fréquemment utilisée, mais cela réduit la lisibilité. Et il n'est pas recommandé d'importer *

Les exemples suivants illustrent les différentes utilisations du

membres modifiés statiques Variables et méthodes membres

  Plusieurs conclusions :

/**
 *
 * Created by ascend on 2017/6/9 13:51. */public class Test {public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("net.liebao.test.A");
    }
}class A {static {
        System.out.println("A.static initializer");
    }public A() {
        System.out.println("A.A");
    }
}

Sortie :

A.static initializer

Conclusion 1 : Les ressources statiques appartiennent à la classe, mais sont indépendantes de la classe. Les ressources statiques sont chargées lorsque. la classe est initialisée (en avance pour new), par exemple, vous pouvez charger les ressources statiques d'une classe via : Class.forName("xxx"), mais il n'y a pas de new.

 Conclusion 2 : Les ressources statiques (variables membres statiques, méthodes membres statiques, les mêmes ci-dessous) ne peuvent pas accéder Les ressources non statiques et les ressources non statiques sont générées lorsqu'elles sont nouvelles, elles ne sont donc pas accessibles. Au contraire, les ressources non statiques peuvent accéder aux ressources statiques.

 Conclusion 3 : Les ressources statiques peuvent accéder aux ressources statiques, mais Il convient de noter que les ressources statiques peuvent attribuer des valeurs aux ressources statiques définies après, mais elles ne peuvent pas accéder aux ressources statiques définies après.

Une autre utilisation courante consiste à implémenter des singletons à l'aide d'un modèle statique.

Nous savons tous que la caractéristique du modèle singleton est que la classe ne peut avoir qu'une seule instance. Pour réaliser cette fonction, le constructeur de la classe doit être masqué, c'est-à-dire. , le constructeur est déclaré privé et fournit une méthode pour créer un objet. Puisque l'objet construit est déclaré privé, le monde extérieur ne peut pas créer directement un objet de ce type. Il ne peut obtenir l'objet de la classe que via la méthode. fourni par la classe. Pour atteindre cet objectif, le seul moyen d'atteindre cet objectif est de créer La méthode de l'objet est déclarée statique, et l'exemple de programme est le suivant :

class Singleton {private static Singleton instance = new Singleton();//私有化构造函数private Singleton(){}public static Singleton getInstance(){return instance;
    }
}  

Le mode singleton ci-dessus est le mode homme affamé

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:
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