OT: String auf null prüfen

  • 16 Antworten
  • Letztes Antwortdatum
GENiALi

GENiALi

Fortgeschrittenes Mitglied
11
Hallo

Da ich nicht noch extra ein Java Forum suchen will frage ich einfach mal kurz hier nach. Ich habe folgende Methode.
Code:
public static boolean isNullOrEmpty(String s)
{
    return s == null || s.length() == 0;
}
Wenn ich im Debugger schaue sehe ich das s null ist. Die Methode gibt mir aber immer false zurück. Auch s == null ist dann false, meiner Meinung nach müsste aber true kommen. Im Bild sieht man schön das s null sein soll.
null.png


Wie prüfe ich korrekt auf null?
 
Also in C# könnte man das so mache event. hast du den debuger nicht weiter laufen lassen.
 
Zuletzt bearbeitet:
return s == null;
Sollte eigentlich gehen! Grad getestet.

Edit:
String s = null;
System.out.println("- - - - - - - " + isStringNull(s));//gibt mit true

private static boolean isStringNull(String s) {
return s==null;
}
 
Zuletzt bearbeitet:
Bin eurer Meinung. Der Debugger und Android nicht. Ich bekomme da immer false zurück was mir die ganze Logik verhaut.

Allerdings muss ich sagen das die übergebene Variable aus SQLite kommt. Via ormLite abegfüllt. VIelleicht müsste ich das noch anschauen.
 
Hab es jetzt nochmal mit dem Debugger getestet und die Methode identisch mit deiner aufgebaut. Hat einwandfrei funktioniert.
Vielleicht mal direkt nachsehen, was in der DB steht.
 
hallo

es kann nicht daran liegen, dass der string zwar null aber nicht leer ist??
beachte: wenn s==null aber die Länge trotzdem > 0 ist liefert die funktion true zurück: es müssen b e i d e bedingungn false sein, damit false geliefert wird.

gruss
josef

ok, hab deinen ausdruck übersehen, sorry!!
 
Zuletzt bearbeitet:
Ich vermute langsam das ich mal den ORMapper anschauen muss. Vielleicht ist ein String null aus der DB nicht gleich s == null.
 
Wenn ich ins Blaue raten müsste würde ich sagen das der fehler daher kommt das SQL null und Java null nicht zwingend das selbe ist.

Versuch dein wert mal so zu holen bevor du ihn überprüfst.

rs.wasNull()=Reports whether the last column read had a value of SQL NULL.
Das getString mus darum drin bleiben.

Code:
ResultSet rs = stmt.executeQuery( "SELECT * FROM Customer" );
String s = rs.getString( "Name" );
if ( rs.wasNull() )
{
s=null;
}
 
Zuletzt bearbeitet:
Ich nutze aber ormLite. Also keine eigenen Queries. :)
Was mir aber aufgefallen ist. s.getByte() == [110, 117, 108, 108] was null ist. Ich denke wenn s wirklich null wäre würde getByte() auf die Fresse fallen.
 
Was gibt s.length() denn zurück? 4? steht in s vielleicht "null" drin statt, das es null ist?
 
GENiALi schrieb:
Ich nutze aber ormLite. Also keine eigenen Queries. :)
Was mir aber aufgefallen ist. s.getByte() == [110, 117, 108, 108] was null ist. Ich denke wenn s wirklich null wäre würde getByte() auf die Fresse fallen.

es würde ja auch schon bei s.length() == 0 ne exception fliegen.
 
strider schrieb:
Was gibt s.length() denn zurück? 4? steht in s vielleicht "null" drin statt, das es null ist?

ha, 4, was ja falsch ist. Ich vermute da steht null drin. s ist nicht null, s == "null"

Der ursprüngliche Beitrag von 16:57 Uhr wurde um 17:03 Uhr ergänzt:

Hässliche Lösung.

Code:
public static boolean isNullOrEmpty(String s)
{
    return s == null || s.length() == 0 || s.toLowerCase().equals("null");
}
 
ja hässlich, aber wohl nicht viel besser möglich, wenn da der String nicht einfach NULL zugewiesen wird.

würde mal vermuten, das ist so nicht gewollt.
 
Hallo zusammen,

ich frage mich, wieso man einem primitiven Datentyp als "NULL" definiert?

Du kannst dem String ja einfach einen "Leerstring" mitgeben (bzw. ein String hat in Java initial einen "Leerstring" ). Diesen kannst du dann mit der "Equals()"
Methode prüfen.

Ich kenne es aus z.B. Clipper oder Visual Objects, dass ein String initial ein "NULL_STRING" ist und wenn man auf diesen zugreift, ohne vorher einen Wert zugewiesen zu haben, einen Fehler bekommt. (Hier ist NULL_STRING != Leerstring)
 
string ist kein Primitiver Datentyp. Wird nur als solcher verkauft.
Und solange das hier funktioniert String s = null; solange kann ein String null sein.
 
GENiALi schrieb:
string ist kein Primitiver Datentyp. Wird nur als solcher verkauft.
Und solange das hier funktioniert String s = null; solange kann ein String null sein.

Stimmt - der String ist ein Objekt und nicht nur ein "string".
 
String kannst du im wesentlichen als char[] sehen
 
Zurück
Oben Unten