Maison >Java >javaDidacticiel >Explication détaillée de la boucle infinie des variables membres non statiques en Java
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!