Maison >Java >javaDidacticiel >Quand et pourquoi devriez-vous utiliser `new String(...)` en Java ?

Quand et pourquoi devriez-vous utiliser `new String(...)` en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-16 00:40:11637parcourir

When and Why Should You Use `new String(...)` in Java?

L'utilisation de "new String(...)" en Java

Lorsque vous rencontrez la structure de code "new String(... )" en Java, il est important de comprendre son objectif et ses effets. Contrairement aux affectations de chaînes simples (par exemple, "s = "Hello World";"), cette syntaxe utilise l'opérateur "new" pour créer un objet String en l'initialisant avec une constante de chaîne.

Objectif de "new String(...)"

Bien que les constantes de chaîne résident dans le pool de constantes, le comportement de "new String(...)" n'est pas aussi simple qu'on pourrait le supposer. Bien qu'il crée un nouvel objet String, cela n'entraîne pas nécessairement l'allocation d'une nouvelle mémoire sur le tas.

Mise en garde concernant la copie forcée

Une idée fausse courante est que "new String(...)" force une copie distincte du tableau de caractères interne. Cependant, ce comportement dépend de l’implémentation et n’est pas documenté. Tenter d'y parvenir, par exemple, "small=new String(huge.substring(10,20))" peut conduire à des résultats inattendus, car l'intégralité du tableau de caractères d'origine peut être conservée, consommant une mémoire importante.

Solution pour les copies distinctes

Pour assurer une copie vraiment distincte d'un tableau de caractères, il est nécessaire d'utiliser "nouveau String(huge.substring(10,20).toCharArray())." Bien que cela nécessite deux fois plus de copie de mémoire (une fois pour "toCharArray()" et une fois pour le constructeur String), il s'agit d'un moyen indépendant de l'implémentation pour obtenir le résultat souhaité.

Pièges liés à l'hypothèse d'une documentation

Il est crucial de noter que la documentation peut parfois manquer de clarté ou d'exactitude. La documentation de "new String(...)" suggère qu'elle crée une copie de la "string", ce qui implique également une copie du tableau de caractères pris en charge. Cependant, comme on l'a vu avec l'implémentation d'Apache Harmony, ce n'est pas toujours le cas.

Conclusion

Comprendre les nuances du "new String(...)" dans Java est essentiel pour éviter les pièges potentiels. Même si cela n’entraîne pas toujours le comportement souhaité, cela répond à un objectif spécifique dans certains scénarios. Cependant, il est recommandé de procéder avec prudence et d'être conscient de la nature dépendante de l'implémentation de cette syntaxe.

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