Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée de la boucle infinie des variables membres non statiques en Java

黄舟
Libérer: 2017-09-23 10:18:52
original
1611 Les gens l'ont consulté

L'éditeur suivant vous proposera un article sur la boucle infinie des variables membres non statiques Java (explication détaillée). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil.

1. Variables membres non statiques

Lorsque la variable membre est un membre non statique. variable et est spécifique à la classe actuelle Lors de l'instanciation, une boucle infinie se produira

Exemple :


public class ConstructorCls {
 private ConstructorCls obj=new ConstructorCls();
}
Copier après la connexion


public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
Copier après la connexion
Copier après la connexion

Résultat :


Exception in thread "main" java.lang.StackOverflowError
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
Copier après la connexion

Analyse : Lorsque new ConstrutorCls() instancie ConstrutorCls, puis initialise le membre obj de cette classe, et obj instancie sa propre classe. Cela continue jusqu'à StackOverflowError

2. 🎜>Les variables membres statiques appartiennent à des classes, et il n'y aura pas de boucle infinie

Par exemple :


public class ConstructorCls {
 private static ConstructorCls obj=new ConstructorCls(); 
}
Copier après la connexion


public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
Copier après la connexion
Copier après la connexion

Analyse : Lorsque new ConstructorCls(), ajoutez d'abord ConstructorCls à la JVM, initialisez les membres statiques de la classe lors du chargement (initialiser une seule fois lors du chargement), initialiser l'objet obj, créer un ConstructorCls, un point clé ici est que ce membre statique appartient à la classe, pas à un certain objet d'instance, donc aucune boucle infinie ne se produira.

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