1. Comparaison avec les méthodes statiques
De manière générale, si du code doit être exécuté au démarrage du projet, vous devez utiliser des blocs de code statiques. Ce type de code doit être exécuté activement ; exécuté automatiquement au démarrage du projet. Le projet est initialisé au démarrage. Sans créer d'objet, lors de l'appel depuis d'autres programmes, vous devez utiliser des méthodes statiques qui sont déjà chargées au chargement de la classe et peuvent être appelées directement avec le. nom de classe. Par exemple, la méthode principale doit être statique. Il s'agit de l'entrée du programme. La différence entre les deux est que les blocs de code statiques sont exécutés automatiquement. Les méthodes statiques sont exécutées lorsqu'elles sont appelées.
2. Précautions pour les méthodes statiques
Lorsque vous utilisez les méthodes statiques d'une classe, veuillez noter :
a. Dans une méthode statique, vous ne pouvez appeler que directement. les autres membres de la même classe sont les membres statiques (y compris les variables et les méthodes), tandis que les membres non statiques d'une classe ne sont pas directement accessibles. En effet, les méthodes et variables non statiques doivent créer un objet instance de la classe avant de pouvoir être utilisées, tandis que les méthodes statiques
n'ont pas besoin de créer d'objets avant utilisation.
b. Les méthodes statiques ne peuvent en aucun cas faire référence à this et aux super mots-clés, car les méthodes statiques n'ont pas besoin de créer d'objets d'instance avant utilisation. Lorsque la méthode statique est appelée, l'objet référencé par this n'est pas généré. all (cette clé Le mot ne peut être utilisé qu'à l'intérieur d'une méthode et représente une référence à "l'objet
qui a appelé la méthode").
Les variables statiques sont des variables qui appartiennent à la classe entière plutôt qu'à un objet. Notez que les variables d'un corps de méthode ne peuvent pas être déclarées statiques, par exemple : fun() { static int i=0;//Illegal. >
3. Exemples de programmes
public class TestStaticCon { public static int a = 0; static { a = 10; System.out.println("父类的静态代码块在执行a=" + a); } { a = 8; System.out.println("父类的非静态代码块在执行a=" + a); } public TestStaticCon() { this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法 System.out.println(a); System.out.println("父类无参构造方法在执行a=" + a); } public TestStaticCon(String n) { System.out.println(n); System.out.println(a); } public static void main(String[] args) { TestStaticCon tsc = null; System.out.println("!!!!!!!!!!!!!!!!!!!!!"); tsc = new TestStaticCon(); } }
运行结果: 父类的静态代码块在执行a=10 !!!!!!!!!!!!!!!!!!!!! 父类的非静态代码块在执行a=8 a在父类带参构造方法中的值:10 8 8 父类无参构造方法在执行a=8
4 Fournis par les internautes
public class StaticBlock { static { System.out.println("静态块"); } { System.out.println("构造块,在类中定义"); } public StaticBlock() { System.out.println("构造方法执行"); } public static void main(String[] args) { new StaticBlock(); new StaticBlock(); } }
静态块 构造块,在类中定义 构造方法执行 构造块,在类中定义 构造方法执行
Conclusion : des blocs de code statiques sont présents. classes Exécutés automatiquement lors du chargement, les blocs de code non statiques sont des codes qui sont automatiquement exécutés lors de la création d'un objet. Les blocs de code non statiques de cette classe ne seront pas exécutés si l'objet n'est pas créé. Et l'ordre d'exécution est un bloc de code statique ------ bloc de code non statique - constructeur.
Ce qui me laisse perplexe, c'est "la valeur de a dans la méthode constructeur de la classe parent avec les paramètres : 10". J'ai alors réfléchi à la raison pour laquelle ce n'était pas 8 à ce moment-là (F11, vous ne pouvez pas définir directement un point d'arrêt. puis l'exécuter. Ce n'est pas différent de l'exécuter directement), et j'ai constaté qu'il était entré en premier dans le constructeur sans paramètre, avait exécuté la première instruction et basculé vers un autre constructeur (la première phrase doit être exécutée, qu'elle le soit ou non, à ce moment-là). a est toujours 10, sinon le bloc de code statique n'a pas encore été exécuté), indiquant que la source est introuvable, que cette instruction déclenche ou non cet avertissement (pas une erreur, car le programme continue de s'exécuter normalement), puis s'exécute le bloc de code non statique, puis à partir du paramètre L'exécution continue au niveau de la méthode constructeur...
Pour des explications plus détaillées sur l'utilisation des blocs de code statiques statiques en Java, veuillez faire attention au site Web PHP chinois pour des articles connexes!