Heim > Java > javaLernprogramm > Warum löst die Verkettung einer Nullzeichenfolge in Java keine NullPointerException aus?

Warum löst die Verkettung einer Nullzeichenfolge in Java keine NullPointerException aus?

Mary-Kate Olsen
Freigeben: 2024-12-02 18:39:11
Original
697 Leute haben es durchsucht

Why Doesn't Concatenating a Null String in Java Throw a NullPointerException?

Verketten von Null-Strings in Java

In Java löst das Verketten eines Null-Strings mit einem anderen String keine NullPointerException aus, wie es vielleicht der Fall wäre erwarten. Stattdessen ist das Ergebnis eine neue Zeichenfolge mit vorangestelltem „null“.

Warum ist dies das erwartete Verhalten?

Gemäß der Java Language Specification (JLS ):

"Wenn der Verweis [auf die Nullzeichenfolge] null ist, wird er in umgewandelt Zeichenfolge „null“ (vier ASCII-Zeichen n, u, l, l).

Wie wird dieses Verhalten implementiert?

Der Compiler optimiert die Zeichenfolge Verkettung zur Verbesserung der Leistung. Dazu wird ein StringBuilder-Objekt verwendet, um die Verkettungsergebnisse zu akkumulieren.

Wenn eine Nullzeichenfolge auftritt:

Wenn die Nullzeichenfolge das erste Argument ist, wird String.valueOf( aufgerufen. ), um ihn in einen Nicht-Null-String („null“) umzuwandeln.

    Wenn der Null-String nicht das erste Argument ist, wird der Null-String an den StringBuilder angehängt und Ruft dann String.valueOf() für das Ergebnis auf.
  • Beispiel

Betrachten Sie den folgenden Code:

The Der Compiler optimiert diesen Code in das folgende Äquivalent:

String s = null;
s = s + "hello";
System.out.println(s); // prints "nullhello"
Nach dem Login kopieren

Da s null ist, String.valueOf(s) gibt „null“ zurück, das dann an den StringBuilder angehängt und in einen String konvertiert wird.

Das obige ist der detaillierte Inhalt vonWarum löst die Verkettung einer Nullzeichenfolge in Java keine NullPointerException aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage