new StringBuilder().append("string1").append("string2").toString()Ce programme fait la concaténation de deux chaines de caractères:
public class Concatenation_string {Exécution:
public static void main(String[] args) {
String s1 = "chaine1";
String s2 = "chaine2";
String s1s2 = concatenation_strings_java(s1, s2);
System.out.println(s1s2);
}
public static String concatenation_strings_java (String s1, String s2) {
return s1+s2;
}
}
chaine1chaine2
public String concat(String s)Exemple:
public class Concatenation_string {Exécution:
public static void main(String[] args) {
String s = "je suis un";
s = s.concat(" programmeur");
System.out.println(s);
}
}
je suis un programmeur
a+=bPremièrement, il y a une petite différence dans la sémantique. Si a est null, alors a.concat(b) déclenche un NullPointerException, par contre l'opérateur '+' dans l'instruction a+=b traite la valeur de a même si elle est null. Par ailleurs, la méthode concat() accepte seulement les valeurs de type String tandis que l'opérateur '+' convertit la valeur en un String( utilisant la méthode toString() ). On peut dire que la méthode concat() est plus stricte en ce qu'elle accepte.
a.concat(b)
public static void main(String[] args) {Vous devez avoir ceci lors de l'exécution:
String s = null;
s = s.concat(" programmeur");
System.out.println(s);
}
Exception in thread "main" java.lang.NullPointerExceptionLe même exemple avec l'opérateur '+':
at Concatenation_string.main(Concatenation_string.java:5)
public static void main(String[] args) {Vous devez avoir ce résultat:
String s = null;
s = s + programmeur;
System.out.println(s);
}
nullprogrammeurDonc, comme on a dit précédemment l'opérateur '+' est équivalent à :
a = new StringBuilder()
.append(a)
.append(b)
.toString();
String result = new StringBuilder(15).append(nom).append(" ").append(prenom).toString();Vous pouvez voir la facilité de concaténer multiple String en utilisant StringBuilder. Cependant, n'oubliez pas d'initialiser StringBuilder avec une capacité égale au nombre de caractères de String final. Cela va éviter de perdre la mémoire inutilisable en initialisant correctement notre String et réduire le temps CPU.
public static void main(String[] args) {Sortie:
String cour =" Cour de ";
String module_math ="math";
/* StringBuilder */
String module_res = "réseaux";
int longueur = cour.length()+module_math.length();
StringBuilder sb = new StringBuilder(longueur);
sb.append(cour).append(module_math);
String res = sb.toString();
System.out.println(res);
/* StringBuilder */
longueur = cour.length()+module_math.length();
StringBuffer sBuffer = new StringBuffer(longueur);
sb.append(" et").append(cour).append(module_res);
res = sb.toString();
System.out.println(res);
}
Cour de math
Cour de math et Cour de réseaux
public static void main(String[] args) {Les résultats pour 10000 opérations de concaténation:
int nb_op=10000;
String s="";
double t1,t2,temps;
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s += "*";
t2 = System.currentTimeMillis();
temps = t2-t1;
System.out.println("+: "+temps);
s="";
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s.concat("*");
t2 = System.currentTimeMillis();
temps = t2-t1;
System.out.println("concat: "+temps);
StringBuilder sb=new StringBuilder();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sb.append("*");
t2 = System.currentTimeMillis();
temps = t2-t1;
System.out.println("StringBuilder: "+temps);
StringBuffer sBuffer=new StringBuffer();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sBuffer.append("*");
t2 = System.currentTimeMillis();
temps = t2-t1;
System.out.println("StringBuffer: "+temps);
}
+: 180.0
concat: 13.0
StringBuilder: 2.0
StringBuffer: 4.0
![]() |
Temps en milliseconde pour 10000 opérations |
Please disable your ad blocker and refresh the window to use this website.