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 :

question sur les valeurs de retour


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut question sur les valeurs de retour
    J'ai une question au combien importante! Je viens de remarg=quer que la boucle foreach:
    ne retourne pas l'élément du tableau mais une copie de celui ci.
    Ma question est donc, est:
    Lorsque une fonction nous retourne une valeur, est-ce une copie de l'élément ou bel et bien l'élément?
    Je pense que c'est une copie mais j'aimerai en être sur.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 68
    Points
    68
    Par défaut
    une fonction retourne un pointeur vers un objet

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    donc par exemple:
    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
     
    class maclasse
    {
      int x;
     
      maclasse()
      {
        x=4;
      }
     
      public int getx()
      {
        return x;
      }
     
      public static void main(String[] arg)
      {
        maclasse classe = new maclasse();
        int y = maclasse.getx();
        y = 8;
        y = maclasse.getx();
        System.out.println(y);
      }
    }
    Je devrais bien voir à l'ecran 8? (si c'est bien une référence!)
    Car sinon je devrait avoir 4, non?

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    en faisant ca, tu fais une copie de la valeur de x. Dans ton cas, tu auras toujours la valeur x = 4.
    Ici tu fais
    y = x( = 4);
    y = 8;
    y = x( = 4);

    Pour mettre à jour la valeur de x, il te faut une méthode d'accès en écriture. genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setX(int x) {
          this.x = x;
    }

  5. #5
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Ok, c'est bien ce que je pensais, donc pour modifier un attribut de classe je doit toujours faire get, modif puis set?

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    si ce sont des membres public ou protected tu peux aussi directement modifier les valeurs.

    genre mais bon c'est pas super propre je trouve ...

  7. #7
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Je trouve aussi Mais bon, je pense que je vais trouver un moyen de faire ce que je veux. Merci

  8. #8
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Si tu veux récupérer la valeur :
    get
    Si tu veux la modifier :
    set
    C'est tout simple
    En Java, il n'y a pas de notions de pointeurs ou de copie, on manipule des références sur les objets.
    Par exemple :
    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
     
    public class MyClass {
       private int myInt = 3;
       private MyType theType;
       public MyClass() {
          theType = new MyType();
       }
       public void setMyInt(int myInt) {
          this.myInt = myInt;
       }
       public int getMyInt() {
          return this.myInt;
       }
       public MyType getMyType() {
          return theType;
       }
       public static void main(String[] args){
          MyClass mc = new MyClass();
          // copie de Mytype dans un nouvel objet MyType (1)
          MyType mt = mc.getMyType();
          // modification du MyType de MyClass directement en appelant une de ses méthodes (2)
          mc.getMyType().theMethod();
       }
    }
    mt est une copie de l'objet theType présent dans MyClass (1)
    En revanche, la deuxième opération (2) appelle une méthode sur l'objet theType directement.

    PS : les noms de classes commencent par des majuscules (par convention)

  9. #9
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Ok, merci la c clair. Je pense que je vais réussir Merci

  10. #10
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Citation Envoyé par sozie9372
    En Java, il n'y a pas de notions de pointeurs ou de copie, on manipule des références sur les objets.
    Sauf dans le cas de type primitif. Dans ce cas, c'est une copie de la valeur qu'on manipule (lors d'un appel à une méthode qui prend un type primitif en argument par exemple)

    EDIT : Et d'ailleurs, c'est aussi une copie de la référence à un objet qui est passé aux méthodes.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 68
    Points
    68
    Par défaut
    pour être exacte, en java c'est pas qu'il n'y a pas de pointeur mais tout est pointeur (ou référence c pareil)

    on parles d'objets pour les fonctions, les primitives (int, char, long, ....) ne sont jamais référencées par des pointeurs

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

Discussions similaires

  1. question sur les valeurs hexadecimal
    Par Ganondorf dans le forum Débuter
    Réponses: 13
    Dernier message: 24/09/2010, 17h15
  2. Question sur les valeur min et max des types ?
    Par doommick31 dans le forum Débuter
    Réponses: 4
    Dernier message: 13/04/2010, 17h35
  3. Question sur les fonctions avec "TABLE" comme param. de retour
    Par Alex01 dans le forum Développement
    Réponses: 2
    Dernier message: 17/11/2008, 09h26
  4. Réponses: 2
    Dernier message: 28/03/2008, 23h28
  5. Question sur les valeurs de SrcBlock et DstBlock
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/10/2006, 11h56

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