190 votes

Comment vérifier si ma corde est égal à null ?

Je veux réaliser une action que SI ma chaîne est une valeur raisonnable. Donc, j'ai essayé ce.

if (!myString.equals("")) {
doSomething
}

et ce

if (!myString.equals(null)) {
doSomething
}

et ce

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

et ce

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

et ce

if ( myString.length()>0) {
doSomething
}

Et dans tous les cas mon programme doSomething malgré le fait que ma chaîne EST VIDE. Il est égal à null. Alors, qu'est-ce que le mal?

AJOUTÉ:

J'ai trouvé la raison du problème. La variable a été déclarée comme une chaîne de caractères et, en conséquence, null attribuée à cette variable a été transformée "null"! Donc, if (!myString.equals("null")) travaux.

253voto

polygenelubricants Points 136838
if (myString != null && !myString.isEmpty()) {
  // doSomething
}

Comme d'autres commentaires, vous devez être conscient de ce terme dans l' equals contrat:

D' Object.equals(Object):

Pour tout non-nulle de la valeur de référence x, x.equals(null) doit return false.

Pour comparer avec d' null est d'utiliser x == null et x != null.

De plus, en x.field et x.method() jette NullPointerException si x == null.

33voto

Michael Myers Points 82361

Si est , puis en appelant ou échouera avec une `` . Vous ne pouvez pas appeler des méthodes d’instance sur une variable nulle.

Vérifiez d’abord pour null comme ceci :

Cela fait usage de l’évaluation de court-circuit pour ne tentez pas la si échoue le contrôle null.

26voto

kedar Points 31

Apache commons StringUtils.isNotEmpty est la meilleure façon d’aller.

15voto

corm Points 81

Si myString est en fait null, tout appel à la référence échouera avec une Exception de pointeur Null (NPE). Depuis java 6, utilisez #isEmpty au lieu de contrôle de la longueur (en tout cas jamais créer une nouvelle chaîne vide avec le chèque).

Soit dit en passant si en comparant avec des littéraux de chaîne que vous faites, inverserait l’instruction pour ne pas avoir un contrôle null, c’est à dire,

Au lieu de :

6voto

Andy White Points 36586

Si votre chaîne est null, les appels comme ceci devraient lèvent NullReferenceException :

myString.equals(null)

Mais de toute façon, je pense qu’une méthode comme ceci est ce que vous voulez :

Puis dans votre code, vous pouvez faire des choses comme ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X