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 :

Sortie de Programme


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 25
    Points
    25
    Par défaut Sortie de Programme
    Bonjour tous le monde
    pourquoi le programme suivant affiche
    MNO
    GHI
    et non
    MNO
    MNO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    public class Exmple{ 
    	     public static void main(String [] args) { 
    	         Person p = new Person("ABC"); 
    	          p.setName("DEF");
    	         changePerson(p); 
    	         System.out.println(p.getName()); 
    	    } 
     
    	     public static void changePerson(Person p) { 
     
            p.setName("GHI"); 
            p = new Person("JKL"); 
            p.setName("MNO"); 
            System.out.println(p.getName()); 
        } 
     } 
     
     class Person { 
        String name; 
        Person(String name) { 
           this.name=name; 
        } 
     
       public void setName(String n) { 
            name = n; 
         } 
     
        public String getName() { 
            return name; 
        } 
     }

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Le premier affichage est celui qui est fait dans la méthode changePerson(Person p). Donc nous sommes d'accord, ça doit bien être MNO.
    Le second affichage est fait dans la méthode main. L'attribut name considéré est celui de l'objet p créé dans la méthode main. Cet objet est référencé par la variable p dans la méthode main. Ensuite on passe l'objet référencé par p à la méthode changePerson. Dans cette méthode, on attribut la valeur "GHI" à l'objet référencé par p. Ensuite on crée un nouvel objet et on le référence par p. Donc dans la méthode changePerson, on n'a plus de référence sur le premier objet créé dans la méthode main, ce qui ne veut pas dire qu'il n'existe plus.
    Quand l'éxecution se poursuit dans le main, l'attribut name de l'objet p a pour valeur GHI, d'où l'affichage.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    oui exactement
    Merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Dans le langage Java, les objets sont passés par référence, mais les références sont passés par valeur. La création de la nouvelle référence dans la méthode est donc limitée à la méthode elle-même.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2008, 00h13
  2. Détecter la sortie du programme
    Par ameno_123 dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2007, 19h32
  3. Réponses: 1
    Dernier message: 21/07/2007, 22h29
  4. Erreur à la sortie du programme
    Par Sachiel31 dans le forum C++
    Réponses: 19
    Dernier message: 26/07/2006, 09h47
  5. petit problème de sortie de programme
    Par clampin dans le forum C
    Réponses: 2
    Dernier message: 17/06/2006, 11h51

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