Je pense que tu fais erreur, le compilo ne crée pas un StringBuffer mais fait simplement appelle à la methode concat(String str): String: String a = "test";
String str = "un "+a;
Dans cet exemple la, un compilateur intelligent creera un String str initialisé a "un test" à la compilation.
Sinon, s'il se peut qu'il y ai une operation sur a visant à le modifier avant de creer str, alors l'operation se resume a creer un tableau de char de longueur a.length()+str.length(), y copier les caracteres de chaque chaines et de retourner une nouvelle chaine à partir du tableau de caracteres.
Bref, pas de StringBuffer dans tous les cas.
PS: Voir methode concat dans le code source de java/lang/String.
[^] # Re: 100% D'accord ... sauf ;)
Posté par Frédéric Desmoulins (site web personnel) . En réponse à la dépêche Java Virtual Machine 1.4.2 beta. Évalué à 2.
String a = "test";
String str = "un "+a;
Dans cet exemple la, un compilateur intelligent creera un String str initialisé a "un test" à la compilation.
Sinon, s'il se peut qu'il y ai une operation sur a visant à le modifier avant de creer str, alors l'operation se resume a creer un tableau de char de longueur a.length()+str.length(), y copier les caracteres de chaque chaines et de retourner une nouvelle chaine à partir du tableau de caracteres.
Bref, pas de StringBuffer dans tous les cas.
PS: Voir methode concat dans le code source de java/lang/String.