Maison >Java >javaDidacticiel >Quand devez-vous utiliser le mot-clé « new » pour les chaînes Java ?

Quand devez-vous utiliser le mot-clé « new » pour les chaînes Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-07 21:54:13554parcourir

When should you use the

Littéraux de chaîne et nouveaux mots-clés dans les chaînes Java

En Java, la classe String est un type de données fondamental utilisé pour représenter des séquences de caractères. Cependant, il existe une différence subtile entre créer un nouvel objet String à l'aide du nouveau mot-clé et attribuer directement une chaîne littérale à une variable.

Utiliser le nouveau mot-clé

Le extrait de code String s = new String("idiot"); crée une nouvelle instance de la classe String, avec le littéral « idiot » comme argument. Cette opération alloue de la mémoire supplémentaire et crée un nouvel objet sur le tas.

Attribuer directement un littéral

Par contre, l'affectation String s = "Plus idiot " ; attribue directement la valeur littérale "Plus idiot" à la variable s. Java crée automatiquement un objet String anonyme et le stocke dans la variable, sans qu'il soit nécessaire d'utiliser le nouveau mot-clé. Cette optimisation évite l'allocation de mémoire et la création d'objets inutiles.

Cependant, dans le cas de la classe CaseInsensitiveString, qui n'étend pas la classe String, l'affectation directe d'un littéral n'est pas directement prise en charge. Pour permettre cela, nous avons deux options :

Option 1 : Étendre la classe String

Nous pouvons étendre la classe String pour créer une classe CaseInsensitiveString qui hérite de son comportement et permet l'affectation directe de littéraux. Cela se fait en remplaçant les méthodes toString() et equals() pour fournir des comparaisons insensibles à la casse.

Option 2 : surcharges de constructeurs personnalisés

Une autre approche consiste à surcharger le constructeur de CaseInsensitiveString pour accepter les arguments littéraux. Ceci peut être réalisé en fournissant un constructeur qui prend un argument String et initialise automatiquement le champ 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!

Déclaration:
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