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

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

黄舟
黄舟original
2017-09-23 10:18:521638parcourir

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();
}


public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}

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)

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(); 
}


public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}

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!

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