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 de paramètres en JAVA


Sujet :

avec Java

  1. #1
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut Passage de paramètres en JAVA
    Bonsoir,

    Comme on sait tous que le passage de paramètres en JAVA se fait par valeur.

    Le cas des paramètres primitifs est évident, mais j'ai une question concernant le type évolué (tel que String):

    En fait, j'ai le 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
    14
    public class PassageParam {
     
         public static void main(String[] args) {
             String ch="Old fashion!";
            m1(ch);
            System.out.println("La valeur de ch est: "+ch);
        }
     
        public static void m1(String ch2){
            ch2="New look!";
            System.out.println(ch2);
        }
     
    }
    D'après mon interprétation, normalement la référence de la variable ch est copié dans une variable ch2 (dans une zone locale à m1), du coup les deux variables ch & ch2 pointent sur le même objet, mais lorsque j'essaie de modifier l'objet pointé par ch2 (qui est censé être le même pointé par ch) à travers cette instruction
    ch2="New look!";
    Je remarque que l'affichage dans la méthode main garde toujours la valeur "Old fashion"!!!
    Comment est-ce possible? et comment je veut modifier l'objet pointée par les 2 variables!

    NB: Je ne sais pas si je suis en train de modifier l'objet pointée par les 2 variables ch & ch2 à travers cette instruction
    ch2="New look!";
    ou bien c'est juste que je suis en train d'affecter un nouveau objet à ch2!

    J'espère que j'ai bien expliqué mon interrogation!

    Merci d'avance pour votre réponse

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Les string sont des objets immutable, ce qui signifie qu'ils ne sont pas modifiables.

    Si tu veux le modifier, alors une nouvelle copie de l'objet est crée. (genre faire un concat par exemple).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Citation Envoyé par L'aigle de Carthage Voir le message
    NB: Je ne sais pas si je suis en train de modifier l'objet pointée par les 2 variables ch & ch2 à travers cette instruction

    non, tu es en train de dire à la variable ch2 de pointer vers un autre objet que celui vers lequel elle pointait jusque-là.

    Pour modifier un objet, il faut appeler l'une des méthodes qui modifient son contenu. La classe String n'en propose aucune, car elle est immutable. On ne peut pas modifier un objet String.

    Du coup, quand on parle de "changer une String" genre pour la mettre en majuscules ou lui enlever ses voyelles, on parle en réalité de construire un nouvel objet String différent de celui qu'on prend au départ.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. passage de paramètres sous java
    Par samarqand dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 13/06/2016, 12h34
  2. Mode de passage des paramètres en java
    Par S_ami dans le forum Général Java
    Réponses: 3
    Dernier message: 29/04/2011, 23h29
  3. Passage de paramètre entre Java et C++
    Par JeanNoel53 dans le forum C++
    Réponses: 4
    Dernier message: 17/08/2009, 17h31
  4. [CR][Java] Passage de paramètres
    Par ista9im dans le forum SDK
    Réponses: 1
    Dernier message: 16/01/2006, 08h26
  5. [Java] méthode static et passage de paramètre
    Par tomburn dans le forum Langage
    Réponses: 10
    Dernier message: 11/05/2005, 16h19

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