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 :

constante static final vs final


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut constante static final vs final
    Bonjour tous le monde,

    J'ai une petite question concernant la déclaration d'une constante en Java, sachant qu'il n'y à pas de constante à vraie dire en Java.
    Par définition un champ d'instance déclarer final ne peut être modifier, je pense que ca devrait faire l'affaire.
    Alors pourquoi dois-je ajouter le mots clé static pour que ça devient static final et devient disponible au moment de la compilation, au lieu d'attendre le runtime, et est ce qu'il à son propre espace mémoire dans la JVM, si oui c'est quoi son nom et son utilité?
    Il y a quelque chose qui m'échappe merci pour votre aide.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par naou18 Voir le message
    J'ai une petite question concernant la déclaration d'une constante en Java, sachant qu'il n'y à pas de constante à vraie dire en Java.
    Pourtant les compile-time constants de Java me semblent assez bien répondre à l'appellation "constante."

    Citation Envoyé par naou18 Voir le message
    Alors pourquoi dois-je ajouter le mots clé static pour que ça devient static final et devient disponible au moment de la compilation, au lieu d'attendre le runtime,
    Si quelque chose n'est ni static ni local, alors il est associé à une instance d'objet, et n'est donc pas accessible tant qu'on a pas une instance d'objet sur laquelle le demander.
    Cela n'a rien à voir avec l'absence ou la présence de final.

    Puisque static évite de devoir passer par une instance, un champ static final a donc opportunité d'être accessible directement à la compilation. C'est également le cas des variables locales qui sont final : leur valeur est effective dès la compilation (mais puisqu'elles sont locales, elles ne sont accessibles que dans leur portée.)

    Citation Envoyé par naou18 Voir le message
    et est ce qu'il à son propre espace mémoire dans la JVM, si oui c'est quoi son nom et son utilité?
    En fait, les champs static final apparaissent dans le même espace mémoire que les champs static tout court. C'est nécessaire pour la cohérence de l'introspection. Mais pour les compile-time constants et en dehors de l'introspection, quand on y accède, le compilateur résout directement leur valeur et la met telle quelle dans la pile, sans compiler d'appel à la classe au moment du runtime.

    Pour les compile-time constants locales, ça ne fait pas de grosse différence. Pour s'en servir il faut bien qu'elles se retrouvent dans la pile.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. differences static final - private protected
    Par fantomas261 dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2007, 12h24
  2. [JSTL] <c:if> Utilisation de constantes static
    Par ncachet dans le forum Taglibs
    Réponses: 3
    Dernier message: 30/01/2007, 14h32
  3. definition d'une constante static
    Par franc82 dans le forum C++
    Réponses: 19
    Dernier message: 13/12/2006, 11h41
  4. Modification d'un attribut static final
    Par n@n¤u dans le forum Langage
    Réponses: 8
    Dernier message: 19/06/2006, 17h19
  5. Réponses: 3
    Dernier message: 13/12/2005, 09h52

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