Je suis une C++ gars de l'apprentissage de Java. Je suis en train de lire Efficace Java et quelque chose me troublait. Il est dit de ne jamais écrire le code comme ceci:
String s = new String("silly");
Parce qu'il crée inutilement des objets String. Mais au lieu de cela, il devrait être écrit comme ceci:
String s = "No longer silly";
Ok bien loin...Cependant, compte tenu de cette classe:
public final class CaseInsensitiveString{
private String s;
public CaseInsensitiveString(String s){
if (s == null) {
throw new NullPointerException();
}
this.s = s;
}
:
:
}
CaseInsensitiveString cis = new CaseInsensitiveString("Polish");
String s = "polish";
-
Pourquoi est la première instruction ok? Ne devrait-elle pas être
CaseInsensitiveString cis = "polonais";
Comment puis-je faire CaseInsensitiveString se comportent comme des Cordes de façon à ce que la déclaration ci-dessus est ok (avec et sans extension de Chaîne)? Quel est-il de Chaîne de fait, il est ok pour simplement être en mesure de passer un littéral comme ça? De ma compréhension, il n'existe pas de constructeur de copie" concept en Java droit?