bonjour une question vraiment bete
quel est la valeur de s
Code : Sélectionner tout - Visualiser dans une fenêtre à part String s ;
je dirais null mais quel est la signification sur le web il parle d'adresse memoire
merci d'avance
bonjour une question vraiment bete
quel est la valeur de s
Code : Sélectionner tout - Visualiser dans une fenêtre à part String s ;
je dirais null mais quel est la signification sur le web il parle d'adresse memoire
merci d'avance
Ta valeur sera bien null.
Ce qui veut dire que tu as sur ton stack une reference qui ne pointe sur rien dans ton heap.
Euh non.
Ça dépend où tu déclares ça.
Si c'est un champ :
Alors là oui, s est null. Ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Test { String s; }
affichera null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Test test = new Test(); System.out.println(test.s);
Mais il n'y a pas de stack qui tienne. Les champs d'un objet sont stockés dans le heap. C'est une variable référence stockée dans le heap, pour indiquer que la référence n'est vers aucun objet.
Si c'est une variable locale :
Dans ce cas, s n'a pas de valeur, et n'en aura pas tant que tu ne lui en auras pas donné une. Il n'est pas possible de lire la valeur de s.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Test { void test() { String s; } }
Ce code :
ne compile pas, car il essaie de lire la valeur de s sans lui avoir donné de valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Test { void test() { String s; System.out.println(s); } }
Je suis pas sur d'avoir bien compris la phrase mais la reference vers l'objet est bien stockee dans le stack.Mais il n'y a pas de stack qui tienne. Les champs d'un objet sont stockés dans le heap. C'est une variable référence stockée dans le heap, pour indiquer que la référence n'est vers aucun objet.
Juste pas, c'est un champ d'objet et les objets sont dans le heap.
Ou alors quand on veut entrer dans les détails techniques d'optimisation JIT, on ne peut pas savoir si la JVM le mettra dans la stack ou dans le heap, c'est décidé en fonction critères variés. En termes de bytecode par contre, c'est un champ d'objet, et les objets sont dans le heap.
merci thelvin j'ai fais exactement les memes tests que toi mais ce que je ne comprends pas string s ="" veut dire que le champ est vide
mais la il y a une adresse memoire dans ce cas
un champ vide a une adresse memoire ?
merci d'avance
Partager