Voilà, je programme en C et C++ et je dois passer à Java.
Je suis en peeuut pperdu pour ce qui se passe en mémoire.
J'ai le code suivant :
La sortie est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class StringObject { void addString(String s1, String s2) { s1 = s1 + s2; // Marque 3 } public static void main(String[] args) { StringObject ref = new StringObject(); String mystring = "Give "; StringBuffer mybuffer = new StringBuffer("Give "); // Marque 1 mystring = mystring + "me six "; mybuffer.append("me six "); // Marque 2 ref.addString(mystring, "lines"); mybuffer.append("lines"); // Marque 4 System.out.println(mystring); System.out.println(mybuffer); } }
Si je comprend ce qui arrive à StringBuffer (occurence : mybuffer) je ne comprend pas ce qui arrive à mystring :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Give me six Give me six lines
Particuliérement cette ligne :
ref.addString(mystring, "lines");
Que représente ref ? Que fait AddString au niveau de la mémoire ? Que ce qui est accessible au niveau de marque 3.
S'il n'ajoute pas "lines" c'est parce que la fonction ne retourne rien et que addString est call by value ?
Partager