IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Scope et durée de vie des variables


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Scope et durée de vie des variables
    Bonjour,

    Voici une petite question.

    Dans les livres sur Java, on explique que la durée de vie d'une variable est définie par son "scope". Ainsi une variable privée de classe a son scope défini par la classe, une variable locale définie par des parenthèses dans une méthode a son scope défini par le couple de { } dans lequel elle est définie.

    Quand on sort du scope d'une variable, sa durée de vie, c'est à dire le moment à partir duquel le ramasse-miette va libérer la mémoire de cette variable, est indéterminé, et donc, hors du scope, on considère qu'une variable n'existe plus puisque le ramasse-miettes est sceptible de la manger à n'importe quel moment.

    Considérons alors le petit code suivant, décrivant une méthode de classe:

    public int[] foo() {
    int[] a = new int[3];
    return a;
    }

    Le scope de a est délimité par foo() , puisque ce sont les accolades { } qui le définissent.

    Cela signifie-t-il que le tableau retourné par foo() risque d'être perdu à n'importe quel moment ?

    Merci

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,
    dans le cas que tu donnes, foo() peux être considéré comme une fonction.
    Une fonction est appelé par une classe exterieur ou par une autre fonction.
    Lorsque tu vas appeler la fonction foo(), tu vas l'appelé ainsi dans le programme exterieur :
    dans la fonction foo(), a n'existe plus dès que l'on sort de celle ci, mais ton tableau n'est pas perdu, puisque tu l'affectes dans ton programme principal (ici à b).
    J'espère avoir répondu à ta question...
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par kalyparker Voir le message
    Bonjour,
    dans le cas que tu donnes, foo() peux être considéré comme une fonction.
    Une fonction est appelé par une classe exterieur ou par une autre fonction.
    Lorsque tu vas appeler la fonction foo(), tu vas l'appelé ainsi dans le programme exterieur :
    dans la fonction foo(), a n'existe plus dès que l'on sort de celle ci, mais ton tableau n'est pas perdu, puisque tu l'affectes dans ton programme principal (ici à b).
    J'espère avoir répondu à ta question...
    Donc en fait la machine virtuelle est "intelligente" et sait que l'adresse retournée par a n'est pas à mettre à la poubelle.

    Super, c'est très clair, merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/06/2010, 11h11
  2. [PHP 5.2] Comment est gérée la durée de vie des variables ?
    Par Christophe Charron dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2009, 11h16
  3. Duree de vie des variables
    Par biggione dans le forum Struts 2
    Réponses: 2
    Dernier message: 20/07/2007, 10h12
  4. Dureé de vie des données dans un flash disque
    Par Tsimplice dans le forum Composants
    Réponses: 5
    Dernier message: 28/05/2007, 10h01
  5. "Batch select" et duree de vie des connections
    Par KillMePlease dans le forum JDBC
    Réponses: 1
    Dernier message: 28/02/2007, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo