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 :

[String] passage d'objet par référence


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de adilou1981
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 127
    Points
    127
    Par défaut [String] passage d'objet par référence
    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[] args) {
     
    	String chaine1 = new String("bonjour");
                    String chaine2 = chaine1;
                            chaine2="coucou";
                    System.out.println(chaine1);
     
    	  }
     
    }
    normalement cette application doit afficher "coucou"
    mais elle m'affiche "bonjour" car qd j'ai fait String chaine2 = chaine1;
    donc chaine2 et chaine1 contiennent meme refernce
    et qd j'ai changé chaine2="coucou" normalement chaine1 doit elle aussi changer

    : :
    Tout développeur est un bidouilleur expérimenté

  2. #2
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    je n'ai rien compris à ce que tu as écris.
    et ce que je vois c'est que tu affectes "bonjour" à chaine1 et que jamais tu ne modifies sa valeur avant de l'afficher.

  3. #3
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    En effet! au moment ou tu fais chaine2=chaine1, ces 2 chaines sont les memes (meme hashcode).
    Cependant, quand tu fais chaine2="coucou", elle change de hashCode, puisque ca correspond a un chaine2 = new String("coucou").

    Donc, plus d'egalite des "references"...

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    non, car en faisant chaine2 = "coucou" c'est comme si tu faisais chaine2 = new String("coucou").

    chaine2 pointe vers un nouvel objet alors que chaine1 pointe toujours vers l'objet initial.

    De toute façon un objet de type String est immutable, tu ne peux pas le modifier. Tu as l'impression de le faire avec '=' mais en fait tu créé une nouvelle instance de String.

  5. #5
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    on semble d'accord

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    clair 8)

  7. #7
    Membre habitué Avatar de adilou1981
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 127
    Points
    127
    Par défaut
    car en j'avais trouvé ca dans un toutirial :
    http://jmdoudoux.developpez.com/java..._oriente_objet
    (paragraphe4.2.3)
    bon voila ce que j'ai trouvé

    4.2.3. La création d'objets identiques

    Exemple:
    MaClasse m1 = new MaClasse();
    MaClasse m2 = m1;

    m1 et m2 contiennent la même référence et pointent donc tous les deux sur le même objet : les modifications faites à partir d'une des variables modifient l'objet.

    Pour créer une copie d'un objet, il faut utiliser la méthode clone() : cette méthode permet de créer un deuxième objet indépendant mais identique à l'original. Cette méthode est héritée de la classe Object qui est la classe mère de toute les classes en Java.


    Exemple:
    MaClasse m1 = new MaClasse();
    MaClasse m2 = m1.clone();
    m1 et m2 ne contiennent plus la même référence et pointent donc sur des objets différents.
    donc l'objet string fait exception de ca
    Tout développeur est un bidouilleur expérimenté

  8. #8
    Membre habitué Avatar de adilou1981
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 127
    Points
    127
    Par défaut
    c bon là j'ai compris .
    Tout développeur est un bidouilleur expérimenté

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 80
    Points
    80
    Par défaut
    J'ai fait un joli schéma pour que ce soit bien clair pour tout le monde :

    (c'est grand désolé)

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

Discussions similaires

  1. Passage d'objet par valeur
    Par roro06 dans le forum C#
    Réponses: 9
    Dernier message: 14/01/2011, 17h22
  2. Passage d'objet par valeur
    Par Ghurdyl dans le forum C++/CLI
    Réponses: 4
    Dernier message: 15/07/2009, 17h08
  3. Passage d'objet par parametre get
    Par bapfuror dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/06/2009, 14h39
  4. [POO] Passage d'objet par référence
    Par PinGu- dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2008, 10h23
  5. [ JSP ][ Débutant ] Passage d'objet par un forward
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/04/2004, 10h33

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