Unterschied zwischen null und leer ("") Java String
Was ist der Unterschied zwischen null
und die ""
(leere Zeichenfolge)?
Ich geschrieben habe, einige einfache code:
String a = "";
String b = null;
System.out.println(a==b); //false
System.out.println(a.equals(b)); //false
Beide Aussagen zurück false
. Es scheint, ich bin nicht in der Lage zu finden, was ist der tatsächliche Unterschied zwischen Ihnen.
InformationsquelleAutor der Frage Vikas Patidar | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
"" ist eine tatsächliche Zeichenfolge, wenn auch ein leerer.
null, bedeutet aber, daß die String-variable zeigt nichts.
a==b
gibt false zurück, da "" und null nicht belegen denselben Platz im Speicher--in anderen Worten, Ihre Variablen nicht auf die gleichen Objekte verweisen.a.equals(b)
gibt false zurück, da "" nicht gleich null, offensichtlich.Der Unterschied ist aber, dass seit "" ist eine tatsächliche Zeichenfolge, kann man Sie noch aufrufen von Methoden oder Funktionen wie
a.length()
a.substring(0, 1)
und so weiter.
Wenn der String gleich null ist, wie b, Java wirft eine
NullPointerException
wenn Sie versucht haben, aufrufen, sagen Sie:b.length()
Wenn die Differenz, die Sie sich Fragen, ist == vs. equals, es ist dies:
== vergleicht Referenzen, wie wenn ich ging
Würden false ausgeben, weil ich gleichzeitig zwei verschiedene Objekte, und a und b zeigen auf unterschiedliche Objekte.
Jedoch
a.equals(b)
wäre in diesem Fall true zurückgeben, daequals
für Strings true zurück wenn, und nur wenn Sie das argument String ist nicht null und entspricht die gleiche Sequenz von Zeichen.Seien Sie gewarnt, obwohl, dass Java nicht haben, ein besonderer Fall für Streicher.
Würden Sie denken, dass die Ausgabe wäre
false
da sollte es zuordnen zwei verschiedene Schnüre. Eigentlich wird Java Praktikant literal-Zeichenfolgen (diejenigen, die initialisiert werden, wie a und b in unserem Beispiel). Also seien Sie vorsichtig, denn das kann einige Fehlalarme auf, wie == Werke.InformationsquelleAutor der Antwort Zach L
Können Sie auch verstehen, den Unterschied zwischen null und leere Zeichenfolge auf diese Weise:
InformationsquelleAutor der Antwort mikiqex
String ist ein Objekt und kann null sein
null bedeutet, dass das String-Objekt wurde nicht instanziiert
"" ist ein tatsächlicher Wert des instanziierten Objekts String wie "aaa"
Hier ist ein link, der könnte verdeutlichen, dass Punkt http://download.oracle.com/javase/tutorial/java/concepts/object.html
InformationsquelleAutor der Antwort Aba Dov
Was deine Aussagen sagen Sie nur, "dass" ist nicht das gleiche wie null - das ist wahr. "" ist eine leere Zeichenfolge; null bedeutet, dass kein Wert zugewiesen wurde.
Könnte es mehr aufschlussreich, um zu versuchen:
"" ist immer noch ein string, was bedeutet, man kann die Methoden aufrufen und erhalten Sie aussagekräftige Informationen. null ist eine leere variable - es gibt buchstäblich nichts gibt.
InformationsquelleAutor der Antwort Arkaaito
Es ist ein ziemlich signifikanter Unterschied zwischen den beiden. Der leere string
""
ist "die Zeichenfolge, die keine Zeichen hat." Es ist eine tatsächliche Zeichenfolge, die eine gut definierte Länge. Alle standard-string-Operationen sind gut definiert, die auf der leeren saite), können Sie es konvertieren in Kleinbuchstaben, look-up-index der Charakter, usw. Der null-stringnull
ist "no string". Es muss nicht eine Länge, weil es nicht ein string an alle. Man versucht, jede standard-string-operation, um die null-Zeichenfolge wird die UrsacheNullPointerException
zur Laufzeit.InformationsquelleAutor der Antwort templatetypedef
null bedeutet der name nicht die Referenzierung von jedem instanziierten Objekt. "" bedeutet eine leere Zeichenfolge.
Hier eine sich auf einen Gegenstand, die passiert zu sein eine leere Zeichenfolge. b nicht verweisen auf ein beliebiges Objekt, wie es die null.
InformationsquelleAutor der Antwort Shamim Hafiz
hier
a is an Object
aberb(null)
ist nicht ein Objekt, so wird ein null-Verweishier ist meine ähnliche Antwort
InformationsquelleAutor der Antwort
In Java-eine Referenz-Typ zugeordnet
null
hat keinen Wert. Ein string zugewiesen""
einen Wert hat: eine leere Zeichenfolge, was bedeutet, dass ein string keine Zeichen. Wenn eine variable zugeordnet wirdnull
es bedeutet, dass es keine zugrunde liegende Objekt jeglicher Art, string oder sonst.InformationsquelleAutor der Antwort JUST MY correct OPINION
Einen Verweis auf eine leere Zeichenfolge
""
Punkte auf ein Objekt im heap - so können Sie rufen Sie die Methoden auf.Aber ein Verweis auf
null
hat kein Objekt in dem heap, und somit erhalten Sie eineNullPointerException
.InformationsquelleAutor der Antwort Mukesh Kumar
"" und null beide unterschiedlich sind . das erste bedeutet, dass Sie als Teil der string-variable Deklaration der string-Konstante wurde in der string-pool und etwas Speicher zugewiesen wurde.
Aber wenn wir erklären es mit null dann hat es gerade instanziiert wurde der jvm , aber kein Speicher zugewiesen wurde. deshalb, wenn Sie versuchen, Zugriff auf dieses Objekt, indem Sie es mit "" - leere variable , es kann nicht verhindern, dass nullpointerexception . Nachfolgend finden Sie eine use-case.
}
InformationsquelleAutor der Antwort siddhartha
Aus dem wikipedia-Artikel über leere Zeichenfolge.
InformationsquelleAutor der Antwort weltraumpirat
Einer Zeichenfolge kann leer sein, oder Sie haben eine
null
Wert. Wenn ein stringnull
ist es nicht der Bezugnahme auf etwas im Speicher. Versuchens.length()>0
. Dies ist, weil, wenn ein string leer ist, es noch gibt eine Länge von 0. Also, wenn Sie geben nichts für die gleichen, dann wird es noch weiter Schleife, da es sich nicht registrieren, die string alsnull
. In der Erwägung, dass, wenn Sie überprüfen Sie die Länge, dann wird die Ausfahrt aus der Schleife.InformationsquelleAutor der Antwort Bibiana
Dieses Konzept kann besser verstanden werden aus der Mathematik. Haben Sie jemals versucht, die Aufteilung einer Zahl (ungleich null) von (0) mit einem Rechner e.g 7/0? Sie werden ein Ergebnis bekommen, dass sieht aus wie etwas das:
undefined
not a number
null
etc. Dies bedeutet, dass der Betrieb unmöglich ist, für einige Gründe (lassen wir diejenigen Gründe diskutiert werden, an einem anderen Tag).Nun, diese auszuführen: 0/7. Sie erhalten die Ausgabe 0. Dies bedeutet, dass der Betrieb möglich ist, und können ausgeführt werden, aber Ihnen die Antwort 0, da ist nichts mehr übrig nach der Teilung. Es gibt einen gültigen Ausgabe-und die Ausgabe ist null.
Im ersten Beispiel, war nicht nur die Ausgabe ungültig ist, wird der Betrieb nicht möglich war, zu führen. Das ist vergleichbar mit
null
string in java. Das zweite Beispiel ist ähnlich zuempty
string.InformationsquelleAutor der Antwort