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 :

valeur de string s


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut valeur de string s
    bonjour une question vraiment bete
    quel est la valeur de s
    je dirais null mais quel est la signification sur le web il parle d'adresse memoire
    merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Ta valeur sera bien null.

    Ce qui veut dire que tu as sur ton stack une reference qui ne pointe sur rien dans ton heap.

  3. #3
    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
    Euh non.

    Ça dépend où tu déclares ça.

    Si c'est un champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Test {
     
      String s;
     
    }
    Alors là oui, s est null. Ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Test test = new Test();
    System.out.println(test.s);
    affichera null.

    Mais il n'y a pas de stack qui tienne. Les champs d'un objet sont stockés dans le heap. C'est une variable référence stockée dans le heap, pour indiquer que la référence n'est vers aucun objet.

    Si c'est une variable locale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Test {
     
      void test() {
        String s;
      }
     
    }
    Dans ce cas, s n'a pas de valeur, et n'en aura pas tant que tu ne lui en auras pas donné une. Il n'est pas possible de lire la valeur de s.

    Ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Test {
     
      void test() {
        String s;
        System.out.println(s);
      }
     
    }
    ne compile pas, car il essaie de lire la valeur de s sans lui avoir donné de valeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Mais il n'y a pas de stack qui tienne. Les champs d'un objet sont stockés dans le heap. C'est une variable référence stockée dans le heap, pour indiquer que la référence n'est vers aucun objet.
    Je suis pas sur d'avoir bien compris la phrase mais la reference vers l'objet est bien stockee dans le stack.

  5. #5
    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
    Juste pas, c'est un champ d'objet et les objets sont dans le heap.

    Ou alors quand on veut entrer dans les détails techniques d'optimisation JIT, on ne peut pas savoir si la JVM le mettra dans la stack ou dans le heap, c'est décidé en fonction critères variés. En termes de bytecode par contre, c'est un champ d'objet, et les objets sont dans le heap.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    merci thelvin j'ai fais exactement les memes tests que toi mais ce que je ne comprends pas string s ="" veut dire que le champ est vide
    mais la il y a une adresse memoire dans ce cas
    un champ vide a une adresse memoire ?
    merci d'avance

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/03/2013, 11h56
  2. [Débutant] Modifié valeur variable string
    Par TheAntoine17 dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/02/2012, 19h58
  3. Récupération d'une valeur en string sous format spécifique
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2007, 14h04
  4. Réponses: 7
    Dernier message: 23/03/2007, 11h38
  5. [initialisation et valeur] valeur dans String[]
    Par okoax dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 11h34

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