Passage d'argument par référence (String et StringBuffer)
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 :
Code:
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);
}
} |
La sortie est :
Code:
1 2 3
|
Give me six
Give me six lines |
Si je comprend ce qui arrive à StringBuffer (occurence : mybuffer) je ne comprend pas ce qui arrive à mystring :
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 ?