L'éditeur suivant vous proposera un article qui traite en détail des problèmes statiques et dynamiques de Java. 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 pour y jeter un œil
Impossible de faire une référence statique au champ non statique
Les méthodes statiques ne peuvent pas référencer des variables et des méthodes membres non statiques
class A { private int a = 1; public sttaic void main(String[] args){ System.out.println(a); } }
Étant donné que la variable d'instance doit être l'état de l'objet spécifique, vous devez d'abord A a = new A() et ensuite System.out.println(a, a);
Ou changez la variable en static
Aucune instance englobante de type EventApp4 n'est accessible. Doit qualifier l'allocation avec une instance englobante de type EventApp4 (par exemple x.new. A() où x est une instance de EventApp4).
Raison : La classe interne n'est pas qualifiée de statique, elle est donc dynamique, et je suis nouveau ceci classe interne dans la fonction principale. Pourquoi cela pose-t-il des problèmes ? Parce que les méthodes et variables statiques sont déjà entrées dans la mémoire lorsque la classe est chargée, mais les méthodes et variables non statiques ne peuvent entrer dans la mémoire qu'après l'instanciation, donc dans la méthode statique, new n'est pas une classe interne statique. provoquera une erreur car la classe interne n’existe pas encore. Au contraire, il n'y aura pas d'erreur dans la nouvelle méthode statique dans la méthode dynamique. Pour la même raison, la méthode statique existe déjà avant la méthode non statique.
En analysant à partir du mécanisme de mémoire Java, tout d'abord, lorsque vous créez un objet, vous n'ouvrez pas d'abord de l'espace mémoire pour l'objet dans le tas, mais ajoutez d'abord la méthode statique dans la classe (avec static modification Fonction statique) le code est chargé dans un endroit appelé zone de méthode, puis l'objet est créé dans la mémoire tas. Ainsi, la méthode statique sera chargée au fur et à mesure du chargement de la classe. Lorsque vous créez un objet, l'objet existe dans la mémoire. Le mot-clé this fait généralement référence à l'objet. Cependant, s'il n'y a pas de nouvel objet, vous pouvez également appeler la méthode statique de la classe via le nom de la classe.
Lorsque vous rencontrez des problèmes, il existe les principes suivants
1 Dans main, utilisez des méthodes statiques, des variables statiques et des classes statiques, qui. c'est-à-dire que les variables, les méthodes sont limitées à la statique
2 Dans main, instanciez cette classe ou d'autres classes (classes à utiliser)
3. Mettez les instructions dans main dans le constructeur, instanciez. cette classe dans main, car la référence de cette classe peut être utilisée dans le constructeur this
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!