|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 |
class ConcatIncorrecte {
public static void main(String[] args) {
String s = "China Blue";
System.out.println(s);
//version incorrecte
//concatener(s, " Express");
// version correcte:
s = concatener(s, " Express");
System.out.println(s);
}
/*
* les raisons du comportement incorrect sont que:
* 1. les opérations sur les chaines sont non destructives
*(créent une autre chaine au lieu d'agir sur la chaine originale)
* 2. l'objet s est une référence, mais les référence sont passées
* par valeur (on peut altérer l'objet référencé, mais pas la référence
* elle même):
* + crée une nouvelle chaine
* la référence de cette nouvelle chaine est affectée s
* (on essaie de changer la référence s et l'effet de cette modification n'est que local)
* (revoir l'exemple du cours "méthode auxilliaires et réutilisabilité" avec
* les tableaux)
*/
/*
* version incorrecte
public static void concatener(String s,String s2 )
{
s += s2;
}
*/
// version corrigée
public static String concatener(String s,String s2 ) {
s += s2;
return s;
}
} |