Maison >Java >javaDidacticiel >Pourquoi 'CaseInsensitiveString cis = new CaseInsensitiveString('Polish')' est-il acceptable alors que 'String s = new String('silly')' est déconseillé pour l'optimisation de la mémoire
Optimisation de la mémoire de chaînes Java : comprendre "String s = new String("silly")"
Des inquiétudes ont été soulevées concernant la recommandation de évitez d'écrire du code Java comme "String s = new String("silly")". Bien que ce conseil soit valable pour optimiser l'utilisation de la mémoire dans le cas d'objets String, il peut ne pas être applicable à d'autres classes.
Pourquoi "CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" est-il acceptable ?
L'objet "cis" est une instance de la classe CaseInsensitiveString. Contrairement à String, CaseInsensitiveString est une classe définie par l'utilisateur qui nécessite qu'un constructeur crée un objet. Par conséquent, la syntaxe "CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" est nécessaire pour initialiser l'objet avec la valeur de chaîne spécifiée.
Comment faire en sorte que CaseInsensitiveString se comporte comme String pour une initialisation littérale ?
Pour activer l'initialisation littérale de CaseInsensitiveString comme c'est le cas pour String, on pourrait implémenter le suivant :
Pourquoi est-il acceptable de transmettre directement un littéral à String ?
String est une classe spéciale en Java. Il dispose d'un pool prédéfini de chaînes internes, où les littéraux de chaîne en double sont stockés comme références au même objet. Cela élimine le besoin de plusieurs objets String pour la même valeur de chaîne, réduisant ainsi la consommation de mémoire.
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!