Maison > Java > javaDidacticiel > Pourquoi ne puis-je pas utiliser `new CaseInsensitiveString('Polish')` comme je le fais avec `new String('silly')` ?

Pourquoi ne puis-je pas utiliser `new CaseInsensitiveString('Polish')` comme je le fais avec `new String('silly')` ?

DDD
Libérer: 2024-12-01 01:27:11
original
739 Les gens l'ont consulté

Why Can't I Use `new CaseInsensitiveString(

Clarifier la création de chaînes Java : revisiter "String s = new String("silly")"

En Java, la création d'objets String est un sujet qui soulève souvent des questions. L'une de ces questions concerne la différence d'utilisation entre String et d'autres classes lors de l'attribution de littéraux.

Pourquoi "CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" est-il correct ?

L'instruction "CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" est en effet correcte car String est une classe unique dans Java. Ce comportement n'est pas applicable à d'autres classes, telles que CaseInsensitiveString.

Comprendre le comportement spécial de String :

Contrairement à d'autres classes, String possède certaines caractéristiques inhérentes qui permettent ce comportement unique :

  • Les littéraux de chaîne sont automatiquement internés : String les littéraux (par exemple, "Polish") sont automatiquement intégrés dans le pool de chaînes de la JVM. Cela signifie qu'un seul objet String est créé pour chaque littéral unique, quel que soit le nombre de fois où il est utilisé.
  • La chaîne n'a pas de « constructeur de copie » : La chaîne n'a pas de constructeur standard qui accepte une chaîne comme argument. Au lieu de cela, il possède une fonctionnalité unique qui permet une initialisation directe à partir de littéraux. À cet égard, vous devrez remplacer son constructeur et intégrer manuellement le littéral de chaîne transmis dans le pool de chaînes. Cela nécessiterait l'accès au pool de chaînes interne de la JVM et pourrait entraîner des problèmes de performances s'il n'est pas fait avec soin.

Conclusion :

En résumé, String est une classe unique dans Java qui permet une initialisation simplifiée avec des littéraux. D'autres classes, telles que CaseInsensitiveString, n'ont pas ce comportement et nécessitent une construction explicite à l'aide de leurs constructeurs appropriés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal