StringBuffer en final static mais modifié comme meme
Bonjour,
Soit le bout de code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public class Test {
public static final StringBuffer style = new StringBuffer("original");
public static final String str = "tpto";
public static void main(String... argv) {
Test t = new Test();
t.modify(style);
System.out.println(style);
}
public void modify(StringBuffer sb){
sb.append(" modified");
}
} |
Dans ce bout de code, on définit un StringBuffer static final et donc pas modifiable, pourtant, à la fin de code on voit bien que sa valeur a été modifié.
Je sais que String et immutable contrairement a StringBuffer et Stringbuilder.
comment fonctionne ce mecanisme...?