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 :

De l'égalité avec String


Sujet :

avec Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut De l'égalité avec String
    Bonjour, l'égalité avec le type String me pose problème, plus spécifiquement ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String x = new String("Hello World"); 
    String y = "Hello World"; 
    System.out.println(x == y); // false
    Il y a 2 références distinctes, mais il y a aussi le fait que le littéral "y" est placé dans le String pool du heap, contrairement à l'objet "x" qui n'est pas "poolé".
    Est-la bonne raison pour que le l'opération de comparaison x==y retourne false ?

    Merci

  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
    Le plus simple est encore de se rappeler qu'on ne compare pas les objets avec ==

    Avec les objets, == sert à vérifier si deux variables pointent vers le même objet, ou si une variable pointe vers null. Quand ce qu'on veut faire, ce n'est pas ça, alors il ne faut pas utiliser == parce que ça n'essaie absolument pas de faire ce qu'on veut.

    Pour rappel, on compare les objets avec equals()

    Maintenant, si tu veux regarder plus loin et réfléchir à ce qui se passe,

    je dirais que la raison pour laquelle tu n'as pas d'égalité, c'est que l'un de tes objets est obtenu avec new. Littéralement, ça ne sert pas à autre chose que garantir que l'objet obtenu, est un autre objet que tous ceux que tu pourrais avoir jusque-là.

    Tu obtiens des objets différents, parce que c'est uniquement à ça que sert new.

    Le concept de pool de String n'est pas particulièrement intéressant face à ça. Le pool de String explique comment tu peux avoir deux objets String qui sont égaux. Et quand on passe pas par ce pool, on obtiendra vraisemblablement des objets différents.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Bonjour et merci pour ta réponse,

    En effet, je suis conscient que l'on n'utilise pas le == pour comparer des objets.

    Ce code provient d'une question QCM dans un énoncé de certification OCA java, et j'aurais dû le préciser. Le == est là uniquement pour corser un peu l'exercice.

    Merci encore

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

Discussions similaires

  1. [MySQL] Tester une égalité avec une donnée de type PASSWORD
    Par tiyolx dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/03/2006, 16h06
  2. strlen et strcpy non reconnu avec string.h
    Par wolflinger dans le forum C++
    Réponses: 17
    Dernier message: 21/02/2006, 13h44
  3. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  4. Erreur compilation avec <string>
    Par seal3 dans le forum SL & STL
    Réponses: 9
    Dernier message: 25/08/2005, 20h41
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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