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

avec Java Discussion :

Variable statique locale


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut Variable statique locale
    bonsoir tout le monde ,
    pourquoi ne peut-on pas déclarer une variable static dans la méthode main ?? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Test {
        public static void main(String args[]){
            static int x = 0;
            System.out.println(x);
        }
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Parce qu'une variable locale statique, ça ne veut rien dire et donc ça n'existe pas.

    Si tu cherches à reprendre le concept du C, sache que ce ne sont que des variables globales qui ont été déclarées à l'intérieur de la fonction au lieu d'être déclarées normalement.

    En Java il n'y a pas de variable globale, mais tu peux utiliser une variable membre statique à la place. Et on ne peut pas les déclarer à l'intérieur d'une méthode, seulement à l'extérieur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de coshibe
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 183
    Par défaut
    Pour le mot clé static je t'invite à cliquer sur ce lien

    Mais en bref et en clair dans le texte, ca veut dire que dans le cas d'une methode, elle ne sera exécutée qu'une fois(typiquement la methode main est static). Dans le cas d'une variable static cela veut surtout dire qu'elle est commune à tous les éléments de ta classe. Donc tu ne peux pas déclarer une variable statique au sein d'une méthode.

    Tu as peut etre aussi deja vu dans eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final long serialVersionUID;
    c'est un id auto généré et incrémenté à chaque changement de ta classe.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut
    Si tu cherches à reprendre le concept du C, sache que ce ne sont que des variables globales qui ont été déclarées à l'intérieur de la fonction au lieu d'être déclarées normalement.
    En C si on déclare une variable statique dans une fonction est-ce sera visible pour les autres fonctions ?

    En Java il n'y a pas de variable globale, mais tu peux utiliser une variable membre statique à la place. Et on ne peut pas les déclarer à l'intérieur d'une méthode, seulement à l'extérieur.
    Merci pour cet éclaircissement.

    Pour le mot clé static je t'invite à cliquer sur ce lien
    J'ai compris en ce qui concerne le mot static devant une méthode mais le mot satic devant un bloc c'est la que je me suis planté. j'ai pas bien saisi le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class MaClasse{
       public static Map uneVariableStatique = new HashMap();
       static{
          uneVariableStatique.put("une clef","une valeur");
          uneVariableStatique.put("une autre clef","une autre valeur");
          //etc .
       }
    }
    c'est quoi Map ?
    le HashMap est-ce un constructeur par défaut et que fait-il au juste ?
    la méthode put sert à quoi ?

    Tu as peut etre aussi deja vu dans eclipse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final long serialVersionUID;
    c'est un id auto généré et incrémenté à chaque changement de ta classe.
    Je travaille pas avec Eclipse, pour le moment j'utilise Netbeans mais quand même c'est une remarque géniale. vous voulez dire quoi par "changement de ta classe" ?


    Merci pour vos réponses si précieuses.

  5. #5
    Membre confirmé Avatar de coshibe
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 183
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    J'ai compris en ce qui concerne le mot static devant une méthode mais le mot satic devant un bloc c'est la que je me suis planté. j'ai pas bien saisi le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class MaClasse{
       public static Map uneVariableStatique = new HashMap();
       static{
          uneVariableStatique.put("une clef","une valeur");
          uneVariableStatique.put("une autre clef","une autre valeur");
          //etc .
       }
    }
    c'est quoi Map ?
    le HashMap est-ce un constructeur par défaut et que fait-il au juste ?
    la méthode put sert à quoi ?
    Je t'invite à consulter ce lien concernant les collections "map". Et également celui ci : GoOgLe
    Mais ne te formalise pas sur la classe Map elle n'est ici que pour illustrer l'usage du mot clé static.

    Citation Envoyé par khaled_prg Voir le message
    Je travaille pas avec Eclipse, pour le moment j'utilise Netbeans mais quand même c'est une remarque géniale. vous voulez dire quoi par "changement de ta classe" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final long serialVersionUID = 850043337777238203L;
    est ce que pourrait générer Eclipse quand tu compiles. Si le code a changé depuis la derniere compilation, il va changer sa valeur.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    En C si on déclare une variable statique dans une fonction est-ce sera visible pour les autres fonctions ?
    Bonne remarque. En effet, avec la syntaxe du C, la variable n'est visible que dans la fonction où elle est déclarée. Donc en effet, c'est pas tout-à-fait équivalent à une variable globale. Ce sera compilé tout comme, par contre, et c'est ça qui m'a induit en erreur -_-°.

    Il n'y a pas d'équivalent Java. Disons que l'équivalent, c'est d'organiser ses classes de sorte de respecter les visibilités voulues.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut
    Bonne remarque. En effet, avec la syntaxe du C, la variable n'est visible que dans la fonction où elle est déclarée. Donc en effet, c'est pas tout-à-fait équivalent à une variable globale. Ce sera compilé tout comme, par contre, et c'est ça qui m'a induit en erreur -_-°.

    Il n'y a pas d'équivalent Java. Disons que l'équivalent, c'est d'organiser ses classes de sorte de respecter les visibilités voulues.
    c'est ce que je pensais, j'avais programmé en C et je me rappelle que les variables statiques ne sont utile que s'ils sont globales, c'est pourquoi je me suis posé la question. Merci pour la réponse.

    Je t'invite à consulter ce lien concernant les collections "map"
    c'est le même lien que vous m'avez donniez tout à l'heure !

    Mais ne te formalise pas sur la classe Map elle n'est ici que pour illustrer l'usage du mot clé static.
    Je sais !, mais je voulais comprendre son utilisation (Le mot static devant un bloc) à partir de l'exemple.

    est ce que pourrait générer Eclipse quand tu compiles. Si le code a changé depuis la derniere compilation, il va changer sa valeur.
    comment ?! je n'ai pas bien compris ce que vous voulez dire.

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

Discussions similaires

  1. Variable statique locale à une fonction membre
    Par oodini dans le forum Langage
    Réponses: 36
    Dernier message: 26/11/2011, 23h00
  2. variable statique d'une fonction, locale à un thread?
    Par coyotte507 dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 29/06/2007, 12h54
  3. Utilisation d'une variable statique
    Par kurkaine dans le forum C++Builder
    Réponses: 6
    Dernier message: 14/06/2006, 13h49
  4. Erreur "For loop variable simple local varaible"
    Par Yepazix dans le forum Langage
    Réponses: 13
    Dernier message: 17/09/2005, 22h09
  5. Exportation de variable statique
    Par Laurent Gomila dans le forum C++
    Réponses: 16
    Dernier message: 31/08/2005, 16h32

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