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 :

Passage par valeur


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Passage par valeur
    Bonjour,

    J'ai quelques difficultés à comprendre le résultat du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Test {
     
    	public static void main(String[] arg) {
    		String t = "coucou";
    		String u = "coucou";
    		System.out.println("t==u : " + (t == u));
     
    		int[] tt = { 1, 2, 3 };
    		int[] uu = { 1, 2, 3 };
    		System.out.println("tt==uu : " + (tt == uu));
    	}
     
    }
    qui m'affiche :

    t==u : true
    tt==uu : false

    J'avais cru comprendre que toutes ces variables étaient des références à des objets différents (String ou tableau d'int) et que donc == devait toujours renvoyer "false". Quel est le problème ?

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 628
    Points : 15 789
    Points
    15 789
    Par défaut
    la classe String utilise en interne un cache permet dans certains cas de retourner un objet déjà existant plutôt que de recréer un objet qui représente la même chaine.

    Dans le cas précis de ton exemple, la comparaison avec == retourne vrai mais il ne faut surtout pas prendre ce cas pour un généralité. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            String t = new StringBuilder("cou").append("cou").toString();
            String u = "coucou";
            System.out.println( t == u);
    retournera false.

    Bref mieux vaut ignorer cette spécificité et utiliser equals().

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup pour ta réponse.

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

Discussions similaires

  1. Passage par valeur
    Par NairodDorian dans le forum Fortran
    Réponses: 3
    Dernier message: 22/04/2008, 18h00
  2. Réponses: 12
    Dernier message: 26/01/2008, 21h23
  3. [Débutant] Passage par valeur d'un objet Corba
    Par peaceinpal dans le forum CORBA
    Réponses: 1
    Dernier message: 29/05/2006, 21h15
  4. Passage par Valeur
    Par xc78370 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 00h21
  5. Passage par valeur / passage par adresse
    Par jeje99 dans le forum C++
    Réponses: 13
    Dernier message: 16/02/2006, 11h29

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