Viac na
Ako skontrolovať, či sa môj reťazec rovná null?
Chcem vykonať nejakú akciu, len ak môj reťazec má zmysluplnú hodnotu. Tak som skúsil toto.
if (!myString.equals("")) {
doSomething
}
a toto
if (!myString.equals(null)) {
doSomething
}
a toto
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
a toto
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
a toto
if ( myString.length()>0) {
doSomething
}
A vo všetkých prípadoch môj program doSomething
napriek tomu, že môj reťazec JE EMPTY. Rovná sa null
. Takže, čo je s tým zlé?
DOPLNENÉ:
Našiel som príčinu problému. Premenná bola deklarovaná ako reťazec a v dôsledku toho sa null
priradené tejto premennej zmenilo na "null"
! Takže if (!myString.equals("null"))
funguje.
166
3
Ako ďalšiu pripomienku uvádzame, že by ste si mali byť vedomí tohto termínu v zmluve
equals
:Z
Object.equals(Object)
: Pre každú nenulovú referenčnú hodnotux
byx.equals(null)
malovrátiť false
.Spôsob porovnávania s
null
je použiťx == null
ax != null
.Okrem toho
x.field
ax.method()
vyhodiaNullPointerException
, akx == null
.Musíte skontrolovať, či objekt
myString
jenull
:Skúste,