Maison > Java > javaDidacticiel > le corps du texte

Quelles sont les causes courantes de NullPointerException en Java ?

王林
Libérer: 2023-06-25 10:25:12
original
1595 Les gens l'ont consulté

Java est un langage de programmation orienté objet largement utilisé, et NullPointerException est l'une des exceptions courantes dans la programmation Java. Lorsqu'un objet nul est accédé dans le programme, une NullPointerException est levée. Cet article examinera les causes courantes des exceptions NullPointerException en Java.

  1. L'objet est nul

La cause la plus courante de NullPointerException est que l'objet accédé est nul. Par exemple :

String str = null;
System.out.println(str.length());
Copier après la connexion

Puisque l'objet str est vide, une NullPointerException sera levée lors de l'impression de sa longueur. Vous pouvez vérifier si un objet est nul en ajoutant une instruction if :

String str = null;
if (str != null) {
    System.out.println(str.length());
}
Copier après la connexion
  1. Utilisation de variables non initialisées

Une exception NullPointerException est également levée lorsque vous essayez d'utiliser une variable non initialisée. Par exemple :

String str;
System.out.println(str.length());
Copier après la connexion

Étant donné que la variable str n'est pas initialisée, une NullPointerException sera levée lorsque sa méthode est appelée. Ce problème peut être résolu en initialisant la variable :

String str = "";
System.out.println(str.length());
Copier après la connexion
  1. Accès aux éléments vides du tableau

Les tableaux peuvent également être vides. Si vous essayez d'accéder à un élément nul dans le tableau, une NullPointerException sera levée. Par exemple :

int[] nums = null;
System.out.println(nums[0]);
Copier après la connexion

Puisque le tableau nums est vide, essayer d'accéder à son premier élément lancera une NullPointerException. Ce problème peut être évité en vérifiant si le tableau est vide :

int[] nums = null;
if (nums != null && nums.length > 0) {
    System.out.println(nums[0]);
}
Copier après la connexion
  1. Problème d'héritage

Lorsque l'héritage est utilisé, la sous-classe peut accéder aux variables d'instance de la classe parent en appelant la méthode de la classe parent. Si les variables d'instance de la classe parent sont nulles, la sous-classe ne peut pas accéder à ces variables, lançant ainsi une NullPointerException. Par exemple :

class Parent {
    String name;
}

class Child extends Parent {
    void printName() {
        System.out.println(name.length());
    }
}

Child child = new Child();
child.printName();
Copier après la connexion

Étant donné que le nom de la variable d'instance de la classe parent est vide, une NullPointerException sera levée lorsque la sous-classe tentera d'appeler sa longueur. Ce problème peut être évité en vérifiant dans la sous-classe si la variable de la classe parent est vide :

class Child extends Parent {
    void printName() {
        if (name != null) {
            System.out.println(name.length());
        }
    }
}
Copier après la connexion
  1. Lors de la fermeture de la JVM

Lors de la fermeture de la JVM, une NullPointerException peut être levée. Cela est généralement dû à des méthodes de libération de ressources incorrectes utilisées dans les programmes Java. Par exemple :

InputStream stream = new FileInputStream("file.txt");
// 这里应该添加stream.close()方法来关闭流
System.exit(0);
Copier après la connexion

Étant donné que la méthode stream.close() n'est pas appelée pour fermer le flux de fichiers, une NullPointerException sera levée à la fermeture de la JVM.

Pour résumer, NullPointerException est l'une des exceptions courantes dans la programmation Java. Lors de l'écriture d'un programme, vous devez faire attention aux causes courantes ci-dessus pour éviter ce problème. Renforcer le contrôle des objets creux dans le programme et appeler rationnellement les méthodes de libération des ressources peut éviter l'apparition d'exceptions NullPointerException.

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