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 :

Comparaison des String


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Par défaut Comparaison des String
    Bonjour tous le monde,
    Quelle est la meilleur maniére pour faire une comparaison des String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myString == "uneValeur"
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myString.equals("uneValeur");
    Merci

  2. #2
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    je ne suis pas une autorité en la maniere mais personellement j'aurai plutot tendance a utiliser la premiere si "une valeur" est une constante . Mais bon c'est surtout parce que dans ce cas je pense pas que je penserai a la deuxieme

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Attention!

    Dans le cas d'une comparaison de la valeur de chaînes, il faut toujours utiliser la méthode equals.


    L'opérateur == compare uniquement l'adresse mémoire des objets et peut donc renvoyer faux alors que la valeur des chaînes est identique.

    Cf la FAQ java.

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    Pour comparer les valeurs de deux String, il n'y a pas de choix (comme la dit deadpool).

    mais une remarque :

    pour comparer une contstant à une chaine il est préférable d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "uneValeur".equals(myString)
    en effet "uneValeur" ne peut être null ce qui evite les NullPointerException
    "uneValeur".equals(null) renvoie false

  5. #5
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    merci a vous deux pour ces précision qui me conforte dans l'idée que je me serrai completement planté

    finalement je pourrai dire que : "mon ignorance n'a d'égale que l'univers"
    je me sens l'ame d'un poete aujourd'hui

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    La FAQ n'est pas tout a fait exacte sur ce point.

    Dans l'exemple, on aura toujours a==b, quelque soit le compilateur. Les chaines de caractères du type "coucou" (les litteraux de type string) sont ajoutées automatiquement dans le pool des strings. Cela fait partie des specs java.

    Pour avoir une difference, il faut plutot ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String a = "coucou";
    String b = new StringBuffer("coucou").toString();
    Dire que le pool de strings est vide, est vrai mais inverifiable (à vrai dire, je ne vois pas trop l'interet de cette précision dans la javadoc). Parce que des le premier chargement de classe, tous les noms de methodes, d'attributs, de constantes de type chaine, de chaines vont être ajoutés à cette liste.
    Bref avant que le main s'execute, on peut sans hésitation affirmer que le pool de strings est déjà sacrement rempli.

    Je confirme tout de même que la bonne méthode pour comparer deux chaines, c'est equals. Ce serait du machosisme d'utiliser une methode == qui ne marche que dans certains cas.

Discussions similaires

  1. [XSLT]Problème sur une comparaison if avec des strings
    Par LoDev dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 18/01/2008, 09h27
  2. Mauvais tri des String avec des accents
    Par lbreuillard dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/09/2005, 12h21
  3. [débutant]modifier des string
    Par calavera dans le forum SL & STL
    Réponses: 1
    Dernier message: 16/09/2005, 20h45
  4. [C#] Erreur comparaison de string
    Par Damsou dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/02/2005, 11h14
  5. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42

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