Ich möchte eine Aktion NUR dann ausführen, wenn meine Zeichenfolge einen sinnvollen Wert hat. Also, ich habe dies versucht.
if (!myString.equals("")) {
doSomething
}
und dies
if (!myString.equals(null)) {
doSomething
}
und dies
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
und dies
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
und dies
if ( myString.length()>0) {
doSomething
}
Und in allen Fällen macht mein Programm etwas
trotz der Tatsache, dass mein String LEER ist. Sie ist gleich Null
. Was ist also falsch daran?
HINZUFÜGEN:
Ich habe den Grund für das Problem gefunden. Die Variable wurde als String deklariert und als Folge davon wurde null
, das dieser Variable zugewiesen wurde, in "null"
umgewandelt! Also, if (!myString.equals("null"))
funktioniert.
if (myString != null && !myString.isEmpty()) {
// doSomething
}
Als weitere Anmerkung sollten Sie diesen Begriff im "Gleichheits"-Vertrag kennen:
Für jeden Referenzwert
x
, der nicht null ist, solltex.equals(null)
false
zurückgeben.
Der Weg zum Vergleich mit null
ist die Verwendung von x == null
und x != null
.
Außerdem werfen x.field
und x.method()
eine NullPointerException
, wenn x == null
ist.
Sie müssen prüfen, ob das Objekt "myString" "null" ist:
if (myString != null) {
doSomething
}