Maison >Java >javaDidacticiel >Pourquoi est-il nécessaire d'utiliser « new » lors de la création d'un objet « CaseInsensitiveString » mais pas d'un objet « String » ?
Création de chaînes en Java : le cas de "String s = new String("silly")"
Lors de la création de chaînes en Java, il est crucial de comprendre le comportement de la classe String. Contrairement à de nombreuses autres classes Java, les littéraux String créent automatiquement des objets String sans avoir besoin du mot-clé new. Cependant, la création d'un nouvel objet String à l'aide de l'opérateur new est explicitement déconseillée, car cela peut entraîner une consommation inutile de mémoire.
Pour illustrer cela, considérons le code suivant :
String s = "No longer silly";
Dans ce Dans ce cas, le littéral "Plus idiot" est directement affecté à la variable s, ce qui entraîne la création d'un seul objet String. Cependant, l'extrait de code suivant :
String s = new String("silly");
crée un objet String supplémentaire inutile. Pour éviter cela, il est recommandé d'utiliser l'affectation littérale autant que possible, comme le montre le premier exemple.
Cependant, il peut y avoir des situations où il est nécessaire de créer des objets String de manière dynamique. Par exemple, considérons la classe suivante :
public final class CaseInsensitiveString { private String s; public CaseInsensitiveString(String s) { if (s == null) { throw new NullPointerException(); } this.s = s; } }
Dans ce scénario :
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!