Heim > Java > javaLernprogramm > Warum kann ich „new CaseInsensitiveString('Polish')' nicht wie „new String('silly')` verwenden?

Warum kann ich „new CaseInsensitiveString('Polish')' nicht wie „new String('silly')` verwenden?

DDD
Freigeben: 2024-12-01 01:27:11
Original
739 Leute haben es durchsucht

Why Can't I Use `new CaseInsensitiveString(

Klarstellung der Java-String-Erstellung: Wiederholung von „String s = new String("silly")"

In Java die Erstellung von String-Objekten ist ein Thema, das oft Fragen aufwirft. Eine dieser Fragen betrifft den Unterschied in der Verwendung zwischen String und anderen Klassen bei der Zuweisung von Literalen.

Warum ist „CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" richtig?

Die Aussage „CaseInsensitiveString cis = new CaseInsensitiveString(“Polish“)“ ist tatsächlich richtig, da String eine eindeutige Klasse in Java ist. Dieses Verhalten gilt nicht für andere Klassen wie CaseInsensitiveString.

Das besondere Verhalten von String verstehen:

Im Gegensatz zu anderen Klassen verfügt String über bestimmte inhärente Eigenschaften, die dieses einzigartige Verhalten ermöglichen :

  • String-Literale werden automatisch interniert:String-Literale (z. B. „Polish“) werden automatisch in den String-Pool der JVM interniert. Dies bedeutet, dass für jedes eindeutige Literal nur ein String-Objekt erstellt wird, unabhängig davon, wie oft es verwendet wird.
  • String verfügt nicht über einen „Kopierkonstruktor“:String verfügt nicht über einen Standardkonstruktor, der einen String als Argument akzeptiert. Stattdessen verfügt es über eine einzigartige Funktionalität, die eine direkte Initialisierung aus Literalen ermöglicht.

So veranlassen Sie, dass sich CaseInsensitiveString wie ein String verhält:

Damit sich CaseInsensitiveString hier wie ein String verhält Diesbezüglich müssten Sie den Konstruktor überschreiben und das übergebene String-Literal manuell in den String-Pool integrieren. Dies würde Zugriff auf den internen String-Pool der JVM erfordern und könnte zu Leistungsproblemen führen, wenn es nicht sorgfältig durchgeführt wird.

Fazit:

Zusammenfassend ist String eine einzigartige Klasse in Java, das eine vereinfachte Initialisierung mit Literalen ermöglicht. Andere Klassen wie CaseInsensitiveString weisen dieses Verhalten nicht auf und erfordern eine explizite Konstruktion mit ihren richtigen Konstruktoren.

Das obige ist der detaillierte Inhalt vonWarum kann ich „new CaseInsensitiveString('Polish')' nicht wie „new String('silly')` verwenden?. 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