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 :

java String pool


Sujet :

avec Java

  1. #1
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 188
    Points
    188
    Par défaut java String pool
    Bonjour à tous,

    je viens de faire un test sur l'egalité des deux objets, mais j'ai rien compris

    voici les deux tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            String s1 = "Moulo";
            String s2 = new String("Moulo");
            System.out.println(s1==s2);
    ce test renvoit false.

    et on fait


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            String s1 = "Moulo";
            String s2 = "Moulo";
            System.out.println(s1==s2);
    la valeur retourner soit true


    Merci par avanace

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Subtilités du langage Java dans le traitement des Strings.

    Pour commencer, rappelons que l'opérateur == ne vérifie pas l'égalité des objets, mais l'identité. L'égalité des références, quoi. En gros, ça teste si les deux opérandes sont des références vers un seul et même objet.
    Pour vérifier si deux String ont le même contenu, il faut utiliser leur méthode equals().

    Alors, comment se fait-il que dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s1 = "Moulo";
    String s2 = "Moulo";
    System.out.println(s1==s2);
    s1 et s2 référencent le même objet, alors qu'on a mis deux chaînes littérales "Moulo" ?
    C'est une convention de la JVM : les références vers des chaînes littérales identiques doivent pointer vers la même String.
    "Moulo" et "Moulo" sont deux chaînes littérales identiques, la JVM ne créera donc qu'une seule String pour les deux.

    Bien, maintenant pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s1 = "Moulo";
    String s2 = new String("Moulo");
    System.out.println(s1==s2);
    renvoie false ?
    Simple : l'opérateur new garantit la construction d'un nouvel objet. s2 est donc un nouvel objet String qui contient "Moulo" lui aussi, mais qui n'est pas l'objet String poolé par la JVM. Autrement dit, il y a 3 Strings qui interviennent ici : les deux littéraux "Moulo" et "Moulo", et la String créée avec le constructeur new String(). Cette dernière a été construite pour contenir la même chose, mais elle est un nouvel objet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 188
    Points
    188
    Par défaut
    Merci bien. c'est plus clair maintenant.

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

Discussions similaires

  1. Le type sql "TEXT" comment le convertir en java String ?
    Par pounaid dans le forum Persistance des données
    Réponses: 2
    Dernier message: 12/06/2008, 10h52
  2. java string séparateur
    Par ____22 dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2007, 12h11
  3. MySql, java, String, probleme d'accent.
    Par pigpen dans le forum JDBC
    Réponses: 26
    Dernier message: 26/05/2007, 15h01
  4. Java - Strings et JTextArea
    Par TheReturnOfMuton dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 27/07/2006, 16h48
  5. [Java/String] Completer une chaine avec un caractere
    Par shaun_the_sheep dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2005, 10h01

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