bjr,
je voudrais savoir d'où vient l'ecriture de la creation d'un objet de type String (ex: String s = "toto") est ce que ça vient du langage c (char * s = "toto") ??
pourquoi je ne peux pas ecrire StringBuffer s = "toto"
Version imprimable
bjr,
je voudrais savoir d'où vient l'ecriture de la creation d'un objet de type String (ex: String s = "toto") est ce que ça vient du langage c (char * s = "toto") ??
pourquoi je ne peux pas ecrire StringBuffer s = "toto"
String est une classe certes, mais aussi un type de base. Il existe des raccourcis syntaxiques pour la création des objets de ce type (idem depuis Java 1.5 pour les types primitifs).
StringBuffer est une classe ne représentant pas un type de base (et ce n'est pas une chaine de caractères). Tu ne peux pas faire
car cela revient à assigner à un StringBuffer unhe chaine de caractères, deux types différents en somme.Code:StringBuffer s = "toto"
Bonjour,
A savoir également que new String("plop") provoque la création de deux instances en mémoire (si c'est la première fois qu'on utilise plop). alors que si on utilise juste "plop" il n'y aura qu'une nouvelle instance en mémoire (si c'est la première fois qu'on utilise plop).
On doit cela aux pools de littéraux, un peu plus d'information ici : http://alaindefrance.wordpress.com/2...epresentation/
ok,
est ce que vous pouvez me dire comment sont stockés les objets en memoires, les champs,fonctions etc...
Pour les méthodes disponibles, il y en a beaucoup. Lis la JavaDoc de String. Pour les champs, il n'y en a pas qui te concerne.
Pour la représentation en mémoire, les String sont représentées de deux façons possibles :
- Un char[], tableau de char qui contient les caractères de la String, dans l'ordre.
- Une sous-chaîne : référence vers le char[] d'une autre String, avec un index de début et de fin. Du coup il faut se méfier quand on garde des sous-chaînes en mémoire : elles peuvent garder une référence vers une chaîne très grande qui ne sera pas enlevée de la mémoire.
quand je disais comment sont stockés les objets (ect.) en memoire, je parlais au niveau matériel (RAM). (les references des objets sont stockés dans le pile ?? etc?
Tout dépend si on parle de référence locale ou d'instance. Ce qui provoque par ailleurs une initialisation implicite ou non.
dans tous les cours de langage interprètes que j'ai lu, j en ai vu aucun qui détaillaient ce qui se passait au niveau matériel. (le fait de ne pas savoir ça m'én.rve un peu).Connaissez vous des cours qui expliqueraient tout ça ?
Salut,
En règle général :
- Les références et les types primitifs des variables locales & paramètres sont stocké dans la pile.
- Les instances d'objet et leurs attributs sont stockés dans le tas.
a++