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 :

Comparaison d'Integer incorrect


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Par défaut Comparaison d'Integer incorrect
    Salut.

    Un petit truc qui m'echappe:

    Le code qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.out.println("annee= _" + annee + "_      year= _" + year+"_");
    System.out.println(annee == year);
    System.out.println(annee.compareTo(year));
    me donne le resultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    annee= _2011_      year= _2011_
    false
    0
    annee et year sont des objet de type Integer (pas int)

    Quelqu'un peut m'expliquer pourquoi le == ne marche pas sur les Integer?

    Merci

    edit: si j'utilise int à la place de Integer ca marche normalement

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Integer est une classe (wrapper du primitif int), donc lorsque tu compares l'égalité de deux Integer avec == tu compares leur référence car ce sont des objets.
    Pour tester l'égalité des valeurs tu doit utiliser la méthode equals()
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les objets se comparent avec la méthode equals().
    L'opérateur == sur des objets ne fait que comparer l'identité et non pas le contenu. En clair pour des objets a==b si a et b référence le même objet en mémoire.


    a++

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Les java.lang.Integer sont des objets et tout test d'égalité (operateurs '==' et '!=') d'objet se base sur "l'identité" (référence / adresse mémoire).
    Il faut utiliser la méthode "equals(java.lang.Object)" pour comparer la "valeur" de deux objets.

    Je te conseille de lire un tutoriel Java voir un cours sur la programmation orientée objet.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Par défaut
    Bon quel afflux de reponses. merci pour les explications

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

Discussions similaires

  1. Problème Java/SQL : Incorrect integer value
    Par phantomatiik dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/03/2012, 14h44
  2. Integer comparaison '==' très bizarre!
    Par lenny32 dans le forum Langage
    Réponses: 6
    Dernier message: 22/06/2011, 14h14
  3. comparaison de 2 arraylist<Integer>
    Par livinho38 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 20/05/2010, 14h57
  4. [MySQL] Comprendre - Incorrect integer value: '' for column at row 1
    Par francois_a dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/09/2009, 04h04
  5. Réponses: 6
    Dernier message: 21/01/2004, 13h25

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