J'ai un int
tableau qui n'a aucun élément et j'essaie de vérifier s'il est vide.
Par exemple, pourquoi la condition de l'instruction if dans le code ci-dessous n'est jamais vraie?
int[] k = new int[3];
if (k == null) {
System.out.println(k.length);
}
Réponses:
Il existe une différence essentielle entre un
null
tableau et un tableau vide. Ceci est un test pournull
.«Vide» ici n'a aucune signification officielle. Je choisis de définir vide comme ayant 0 élément:
Une autre définition de «vide» est si tous les éléments sont
null
:ou
la source
obj !- null
, probablement censé êtreobj != null
null
est d'un type différent.ArrayUtils.isNotEmpty(testArrayName)
du packageorg.apache.commons.lang3
garantit que Array n'est pas nul ou videla source
Regardez sa longueur:
Bien qu'il soit plus sûr de vérifier la valeur null en même temps:
la source
La méthode pour vérifier que le tableau est nul ou vide est également présente sur org.apache.commons.lang:
la source
Je viens de .net. Cependant, java / c # sont plus / moins identiques.
Si vous instanciez un type non primitif (tableau dans votre cas), il ne sera pas nul.
Par exemple,
int[] numbers = new int[3];
dans ce cas, l'espace est alloué et chacun des éléments a une valeur par défaut de 0.
Ce sera
null
, quand vous ne le faites pasnew
.par exemple
la source
numbers
n'a pas encore été initialisé. "Non initialisé" etnull
ne sont pas la même chose.int[] numbers
changé enint[] numbers == null
; En c #, ce n'est pas le cas.Un tableau int est initialisé avec zéro donc il ne contiendra jamais de null. Seuls les tableaux d'Object contiendront initialement null.
la source
Le point ici très simplement est que la variable k n'est pas nulle car elle pointe vers le tableau. Peu importe que le tableau lui-même soit vide. Le test nul dans votre message ne serait évalué à vrai que si la variable k ne pointait vers rien.
la source
J'ai testé comme ci-dessous. J'espère que ça aide.
la source
Un
int
tableau sans éléments ne l'est pas nécessairementnull
. Ce ne sera quenull
s'il n'a pas encore été attribué. Consultez ce didacticiel pour plus d'informations sur les tableaux Java.Vous pouvez tester la longueur du tableau:
la source
C'est aussi près que j'ai pu vérifier si un tableau int est vide. Bien que cela ne fonctionnera pas lorsque les entiers du tableau sont en fait à zéro. Cela fonctionnera pendant {1,2,3}, et il retournera toujours false si {2,0} mais {0} retournera true
la source
Dans Java 8+, vous y parvenez à l'aide de la méthode streams allMatch.
Pour primitif:
Pour objet:
la source
Je crois que ce que tu veux c'est
Vous l'avez mis à jour pour qu'il ne soit jamais nul.
la source
Vous pouvez également vérifier s'il y a des éléments dans le tableau en trouvant sa longueur, puis le mettre dans l'instruction if-else pour vérifier s'il est nul.
la source