Modification chaine String
bonjour,
Je suis en train d'apprendre le java et je ne comprend une chose. J'ai acheté le livre "programmer en Java" et dans ce livre il est dit qu'une chaine String ne peut pas être modifiée, alors pour faire un test j'ai fais le programme suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
| public class Chaine3 {
public static void main (String args[])
{
String chn ;
chn = "bonjour" ;
System.out.println(chn) ;
chn = "changement" ;
System.out.println(chn) ;
}
} |
Donnant le résultat suivant :
bonjour
changement
Donc la chaine a bien été modifiée, pourquoi est-il dit alors qu'une chaine n'est pas modifiable ?
Merci.
Modification chaine String
Bonjour,
Je pense que le livre parle de l'objet String. Il faut savoir aussi que String est une classe.
D'aulleurs dans la doc java s'est indiqué ceci :
Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.
Toute modification opére sur la réference et non sur la classe elle même. C'est pour cela qu'on pouvait ecrire :
Code:
String myStr = new String("Je suis une chaine").
mais il faut aussi savoir qu'on peut s'en passer de cette expression actuallement.
Si quelqu'un peut confirmer ce que je dis !!!
Modification chaine String
Re,
Je pense qu'il y aura autant d'instance que d'objet... mais Java gére lui même la mémoire. Les objets initulisés seront netoyés, notamment grâce aux Ramasse miette.
Tu peux créer une variable de classe et l'incrémenter à chaque fois qu'un objet sera crée, pour mieux comprendre l'instanciation... mais j'avoue que dans le cas d'un String() - qui n'est pas ta classe - je perd un peu.