Der Titel sagt im Grunde alles. Normalerweise teste ich dies zusammen mit a string == null
, daher mache ich mir keine Sorgen um einen null-sicheren Test. Welches soll ich verwenden?
String s = /* whatever */;
...
if (s == null || "".equals(s))
{
// handle some edge case here
}
oder
if (s == null || s.isEmpty())
{
// handle some edge case here
}
In diesem Sinne - macht isEmpty()
überhaupt etwas anderes als return this.equals("");
oder return this.length() == 0;
?
isEmpty()
nur Java 6+ ist.Antworten:
Der Hauptvorteil von
"".equals(s)
ist, dass Sie die Nullprüfung nicht benötigen (equals
überprüft ihr Argument und gibt zurück,false
wenn sie null ist), was Sie anscheinend nicht interessiert. Wenn Sie sich keine Sorgen darüber machens
, null zu sein (oder auf andere Weise danach suchen), würde ich dies definitiv verwendens.isEmpty()
. Es zeigt genau, was Sie überprüfen. Es ist Ihnens
wichtig, ob es leer ist oder nicht , und nicht, ob es der leeren Zeichenfolge entsprichtquelle
getValue()
null zurückgegeben, würden Sie eine NullPointerException erhalten, wenntoString()
aufgerufen wurdes
null ist, können Sie keine Methoden dafür aufrufen - es ist null.""
wird niemals null sein, also können Sie Methoden sicher aufrufen undequals()
den Fall behandeln, in dem sein Argument null istisEmpty()
Überprüft die interne Länge eines privaten Arrays, währendequals(Object anObject)
viel mehr (zinstanceof
. B. Überprüfung ). In Bezug auf die LeistungisEmpty()
ist in der Regel schneller.String.equals("")
ist eigentlich etwas langsamer als nur einisEmpty()
Anruf. Strings speichern eine im Konstruktor initialisierte Zählvariable, da Strings unveränderlich sind.isEmpty()
vergleicht die Zählvariable mit 0, während equals den Typ und die Zeichenfolgenlänge überprüft und dann zum Vergleich über die Zeichenfolge iteriert, wenn die Größen übereinstimmen.Also, um Ihre Frage zu beantworten,
isEmpty()
wird tatsächlich viel weniger tun! und das ist gut so.quelle
Eine Sache, die Sie neben den anderen genannten Problemen berücksichtigen sollten, ist die
isEmpty()
in 1.6 eingeführte. Wenn Sie sie also verwenden, können Sie den Code nicht unter Java 1.5 oder niedriger ausführen.quelle
Sie können Apache Commons verwenden. StringUtils isEmpty () oder isNotEmpty ().
quelle
Es ist nicht wirklich wichtig.
"".equals(str)
ist meiner Meinung nach klarer.isEmpty()
kehrt zurückcount == 0
;quelle
str.isEmpty()
ist viel klarer als"".equals(str)
. Es liest sich als das, was Sie überprüfen. Meinungsfrage, denke ich.Ich habe eine Testerklasse geschrieben, die die Leistung testen kann:
Ich fand, dass die Verwendung von .isEmpty () ungefähr die Hälfte der Zeit von .equals ("") dauerte.
quelle