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 :

Sur le comportement des variables


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Sur le comportement des variables
    Bonjour

    Débutant, je découvre un comportement inattendu des variables. Voici mon projet test, avec 2 classes, dont je m'étonne qu'il retourne "1 100", c'est à dire que la valeur de B a été affectée par le changement de valeur de C.

    Pourriez-vous m'éclairer ?

    En vous remerciant par avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package test;
    public class Main {  
        public static void main(String[] args) {
            classe1 B = new classe1();
            classe1 C = B;
     
            System.out.println(B.A);
            C.A = 100;
            System.out.println(B.A);
    }}
    ----

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package test;
    public class classe1 {
       int A ;
       classe1 (){
           A = 1;
    }}

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    je découvre un comportement inattendu des variables
    C'est tous à fait normal, Java travaille par "référence" et non par "valeur"

    C'est à dire pour ton exemple :
    tu crée un objet classe1 et tu fait "pointé" une référence "B" dessus
    Objet<---- B

    Ensuite tu fait C = B donc C pointera sur le même objet que B
    C----->Objet<-----B

    Si tu modifie C, tu ne modifira pas la référence C mais l'objet qu'il pointe
    C----->ObjetModifié<----B

    Tadam, mystère résolu

    Pour faire en sorte que B et C pointe sur 2 objets bien distincts il faut créer un nouvel objet (que C pointera ) et recopier à la main les attributs de l'objet(B) vers ceux de l'objet(C)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    classe1 B = new classe1();
    classe1 C = new classe1();
    C.A = B.A
    ps : les attributs primitif marche par "valeur" par contre (boolean, int, double,...)

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en résumé, B et C sont le même objet, pas de copies comme en C++.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut
    Merci Ivelios pour cette réponse précise qui m'amène à découvrir le clonage des objets en java !

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

Discussions similaires

  1. Question sur le comportement des threads
    Par Krishna dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 12/01/2009, 21h56
  2. Aide sur l'estimation des variables
    Par LAINgoc dans le forum Mathématiques
    Réponses: 1
    Dernier message: 13/10/2008, 11h02
  3. Une question sur le stockage des variables
    Par UnReveDeCryptomeria dans le forum C
    Réponses: 10
    Dernier message: 08/06/2006, 23h37
  4. Réponses: 4
    Dernier message: 04/06/2006, 16h53
  5. question sur le comportement des threads
    Par rose-bonbon dans le forum CORBA
    Réponses: 4
    Dernier message: 27/10/2004, 18h00

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