Maison  >  Article  >  Java  >  Quelles sont les causes courantes de NullPointerException en Java ?

Quelles sont les causes courantes de NullPointerException en Java ?

王林
王林original
2023-06-25 10:25:121600parcourir

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

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

É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());
  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]);

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

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

É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!

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