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 :

variable globale et statique


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut variable globale et statique
    Bonjour,

    Peut on considérer qu'une variable statique est une variable globale en java?


    Merci de votre réponse

    Cordialement.
    Nathalie

  2. #2
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Non on ne peut pas considérer une variable Global comme une variable Static,

    une varibale static ou variable de classe est commune à toutes les references de la classes tandique la variable Globale est specifique à la reference de la classe.

    variable static dites aussi variable de class
    variable globales dites aussi variables d'instances

    j'espere que j'ai pas dis trop de bétise

  3. #3
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Si une "variable globale" est une variable accessible de tout code ...
    cela n'existe pas en Java.

    Même une variable public static n'est pas globale (surprenant mais c'est vrai!)
    on a aussi des objets ThreadLocal dans un contexte de Thread.

  4. #4
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    tu as raison après reflexion professeur shadoko la variable globale est accessible dans tous le code, je l'ai testé en flex, elle depend d'aucune classe sous flex pour avoir une variable global on l'a declare à l'exterieure de la classe dans les imports


    désolé pour la bêtise que j'ai dite

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut variable globale et statique
    Bonsoir,

    Donc en conclusion on peut dire qu'une variable statique est une variable globale en java.

    Merci de votre confirmation.

    Cordialement.

    Nathalie

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Donc en conclusion on peut dire qu'une variable statique est une variable globale en java.
    non .... ça en a le goût et l'odeur mais stricto sensu ça n'en est pas une
    (je l'ai dit précédement).
    (explication: aussi bizarre que ça puisse paraître à un moment donné tu peux avoir MaClasse.varStatique == 5 et Maclasse.VarStatique == 10 !!! il suffit que "MaClasse " soit chargée par deux ClassLoaders différents! la première fois que ce genre d'incident extraordinaire arrive on est tout surpris ... rassures toi c'est rare!)

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    professeur: de la même manière dans un autre language (le C par exemple), si tu charge une librairie deux fois, les variables "statiques" présentes dans la libirairies sont présentes deux fois en mémoire et peuvent avoir une vie séparée. Ce qui importe c'est que le code qui l'utilisé étant luis aussi chargé deux fois, chacun vois sa variable statique comme un grand. C'est la meme chose quand tu passe par deux classloader (exemple typique: un système de plugin où tu charge un plugin deux fois). chaque plugin aura son lot de variable "globale".

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut variable globale et statique
    Merci beaucoup de vos explications.

    Pouvez vous me dire poruqoi vous avez ramené l'exemple des variables statiques qui peuvent avoir deux valeurs différentes si elles sont chargées par deux classloaders au même moment .
    Est ce pour montrer la différence avec une variable globale?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    explication: aussi bizarre que ça puisse paraître à un moment donné tu peux avoir MaClasse.varStatique == 5 et Maclasse.VarStatique == 10 !!! il suffit que "MaClasse " soit chargée par deux ClassLoaders différents!
    Merci encore à vous.
    Cordialement.

    Nathalie

  9. #9
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    ne te tracasses pas avec cet exemple: c'est un epiphénomène (eh oui : deux ClassLoaders à l'insu de mon plein grè!)
    (d'ailleurs je n'avais jamais envisagé cet aspect en C!);
    en fait mon intention était de dire que cet exemple limite permet de se poser une question plus philosophique: globale à quoi?
    à la session, au Thread, au processus,....
    avec des applications avec des parties multiples (et même réparties) la notion de globalité est toujours relative. Donc question fondamentale: on veut partager une valeur avec qui, quand, comment?

Discussions similaires

  1. Variable globale statique ne l'est pas
    Par Invité dans le forum Débuter
    Réponses: 7
    Dernier message: 24/04/2010, 16h46
  2. Réponses: 22
    Dernier message: 24/11/2006, 00h42
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 20h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 09h34

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