Heim > Java > javaLernprogramm > Hauptteil

Warum löst die Verkettung von Nullzeichenfolgen in Java keine NullPointerException aus?

DDD
Freigeben: 2024-11-19 10:10:03
Original
943 Leute haben es durchsucht

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

Verketten von Nullzeichenfolgen in Java

In Java kann das Verketten von Nullzeichenfolgen kontraintuitiv erscheinen, was zur Erwartung einer NullPointerException führt. Dieser Vorgang wird jedoch erfolgreich ausgeführt, was zu einer Zeichenfolge führt, die „null“ enthält, gefolgt von der verketteten Zeichenfolge.

Warum funktioniert das?

Gemäß der Java-Sprachspezifikation (JLS) 8, § 15.18.1, Nullverweise werden während der Zeichenfolgenverkettung explizit in die Zeichenfolge „null“ konvertiert. Diese Konvertierung erfolgt vor allen Methodenaufrufen und stellt sicher, dass keine NullPointerExceptions ausgelöst werden.

Wie funktioniert es?

Der Java-Compiler wandelt den Verkettungsausdruck in eine äquivalente Sequenz von um Methodenaufrufe. Im Fall von s = s „hello“ generiert der Compiler Code ähnlich dem folgenden:

s = new StringBuilder(String.valueOf(s)).append("hello").toString();
Nach dem Login kopieren

Die append-Methode von StringBuilder verarbeitet Nullargumente ordnungsgemäß. Wenn null das erste Argument ist, wird String.valueOf() aufgerufen, um es in einen String umzuwandeln.

Alternativ würde der Ausdruck s = "hello" s umgewandelt in:

s = new StringBuilder("hello").append(s).toString();
Nach dem Login kopieren

In diesem Fall nimmt die Append-Methode null als zweites Argument und delegiert es an String.valueOf().

Hinweis:

Java-Compiler optimieren die Zeichenfolgenverkettung möglicherweise anders, um die Leistung zu verbessern, indem sie Techniken wie StringBuilder-Pooling verwenden. Daher kann der genau generierte äquivalente Code je nach verwendetem Compiler variieren.

Das obige ist der detaillierte Inhalt vonWarum löst die Verkettung von Nullzeichenfolgen 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage