bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004
-
11 mai 2004 à 16:34
bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004
-
12 juil. 2004 à 09:55
Bonjour,
j'aurais juste une question au sujet d'un cas de déclaration de variables en Java :
y a-t-il une grande différence entre :
while(...)
{
int i=...;
...
}
et
int i;
while(...)
{
i=...;
...
}
Est ce que le fait de déclarer la variable en dehors de la boucle permet de gagner en temps ou autre ? Ou cela ne change rien...
Merci d'avance.
bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004 11 mai 2004 à 17:02
Oui ca je suis au courrant merci. Premierement, les deux codes sont tout à fait possibles. Rien n'interdit d'implémenter l'un d'eux. Mais ma question appelle une réponse plus en profondeur...Notamment par rapport au travail du Garbage Collector et si il y a une réelle différence pour la compilation.
Si possible, je souhaiterais avoir une réponse assez précise, merci.
kaloway
Messages postés358Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention13 avril 2020 11 mai 2004 à 17:15
kaloway
je ne sais pas, mais j ai une information qui pourrait t interessr.
2 variables portant le meme nom, l une declarée hors de la boucle est visible de la classe et l autre dans la boucle while n est visible que de la boucle.
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 juillet 2007 12 mai 2004 à 11:03
la reponse est:
les deux sont valables, mais ca tu le sais...
la difference est un pb d'allocation,
si tu le fais en dehors de la boucle, tu alloues une fois une variable,
si tu le fais dans la boucle, tu alloues n fois un variable...
la difference est clair je pense... et ta patience est recompensee...
>:) [font = Comic Sans MS] dams/font >:)
"en dansant la javanaise ..."
bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004 12 mai 2004 à 15:15
j'apprecie enormément ton aide dmaillet malgré son inutilité...
Je ne suis pas un pro en java mais pas un debutant non plus et c'est me prendre un peu comme un débutant de me dire que par une méthode j'alloue en dehors de la boucle une variable et dans l'autre j'alloue plusieurs fois une variable. Au vue de ta réponse, tu n'a ni compris ma question, ni l'air d'être tres calé en java. Enfin bon, je te remercie quand meme de ta participation.
Si tu veux un début de réponse, il n'y a aucune différence au niveau du code produit par les deux méthodes. J'ai du demandé à un maitre de conférence de mon université qui m'a répondu cela. Ce qui confirme que tu ne connaissait pas la réponse en disant "la différence est clair je pense...".
J'avais pourtant précisé qu'il s'agissait d'un cas précis et que la réponse n'était pas forcément évidente.
Ce que tu dois savoir c'est qu'avec java, le compilateur ne garde pas en mémoire les variables pendant toute la durée de leur portée, mais uniquement quand elles sont vraiment utilisées.
Ne pense pas que le compilateur "fait" ce que tu crois qu'il fait seulement en regardant le code. Il travaille un peu plus derriere.
Si quelqu'un a d'autres explications, j'aimerais bien les avoir merci.
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 juillet 2007 12 mai 2004 à 15:41
merci de me prendre moi aussi pour un imbecile
un partout disons...
pour etre plus concernant ta question de depart, tout depend de ce que tu fais dans ta boucle, et donc de la pile ou stack si tu prefere que tu generes...
lconcernat la memoire, le contexte actuel est en effet seulement garde en memoire...
donc ceci pour te dire que ma reponse n'etait pas stupide (merci pour moi)
car dans le contexte de ta boucle, tu vas qd meme a chaque tour reallouer une variable, meme si ceci ne prend pas beaucoup de temps.
D'ailleurs, tu pourras demander a d'autres programmeurs java,
il est plutot conseille d'utiliser ta premiere solution... (allocation en dehors de la boucle).
Qt au GarbageCollector, a chaque fin de boucle, les variables du contexte de ta boucle sont candidats au garbage, mais un garbage n'est pas effectue a chaque fin de boucle, sauf si tu le force.
Et puis precise un peu ta question si tu veux des reponses precises (si des gens ici l'ont, ce qui n'est pas sur a 100%) et que l'on ne te prenne pas pour un debutant... comme tu dis...
---------------------------------------------
>:) dams >:)
...en dansant la javanaise ...
---------------------------------------------
bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004 12 mai 2004 à 16:14
ah bah voila une reponse precise.
Merci je prefere une explication comme cela, on comprend mieux.
Deux dernieres choses :
- o bout d'un moment c'est assez soulant d'avoir des reponses qui servent a rien c'est pour ca que je me suis peut etre emporté (faut dire qu'elles etaient un peu niaises ces reponses, oui toi aussi dmaillet, relit bien la tienne tu me comprendras)...et si c'est parce que je n'ai pas ete assez precis dans ma question (mouai), c'est la seconde choses...
- ...je m'en excuse. Ce qui clot le débat (enfin...).
bewyder
Messages postés11Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 juillet 2004 12 juil. 2004 à 09:55
O moins ma question netai pas si ininteressante que ca...
dautre part, je ne voi pas pk tu me di "die" B@ron, puisque au vu de la PREMIERE reponse de dmaillet, ce que tu di ne vas pas dans son sens : tu dis bien "C'est exactement le même chose seule la portée de ta variable est différente", alors que lui disai quil y avai une difference dallocation. Moi jetai de ton avis, c t donc normal que je ne soi pa satisafi de cette reponse. Je voulai juste de plus amples explications. Et ta reponse
"bewyde ==> die
Les réponses étaient pourtant claires...
Peut-être est-ce l'esprit de certains qui s'embrouillent..."
navai pas lieu detre, surtt si c contre moi. Si la premiere reponse etai si clair que ca, je ne voi pa pk tu es intervenu en contredisan...
Encore faudrait il savoir ce qe signifie "bewyde" ce que tu ne trouveras pas dans un dico. il fau pr ca, connaitre mon origine, ce dont je nai pa envi de parler.