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 :

Méthode pour modifier une string.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Par défaut Méthode pour modifier une string.
    Bonjour,

    Je débute en java et je rencontre une difficulté de débutant niveau premier jour

    Je souhaite écrire une méthode de type void qui modifie le contenu d'une string.

    Voici la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void test(String t) {
    		t = "après";
    }
    Et voici le code qui essaye d'utiliser la méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s = new String("avant");
    test(s);
    System.out.println(s);
    Or, sur la console en sortie, j'obtiens toujours "avant" et non "après".

    Comment je dois faire ? Ayant développé en delphi pendant très longtemps, j'ai peut-être quelques mauvais réflexes dont je dois me débarasser, mais là dans l'immédiat, je ne vois pas d'autre façon de faire.
    Votre aide sera la bienvenue, c'est assez frustrant d'être bloqué sur un problème apparemment si simple lol.

    Merci,
    Jibé.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En Java (et dans un bon paquet de langages,) les paramètres de méthodes sont passés par valeur. Autrement dit la méthode ne peut pas les modifier*.

    Exemple, tu aurais pu écrire
    Là le paramètre n'est pas une variable, on se rend donc bien compte que la méthode ne peut pas modifier la valeur de la variable... Qui n'existe pas.

    Comment faire ? Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String test(String t) {
      return "après";
    }
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s = "avant"; // pas la peine de faire new String()
    s = test(s);
    System.out.println(s);
    Note : la construction new String("une chaîne") n'est presque jamais utile. Autant faire "une chaîne" directement.


    * Toutefois la méthode peut changer le contenu de ses paramètres, par exemple, si on lui passe un tableau, elle peut changer les valeurs contenues dans le tableau.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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 : 46
    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
    Citation Envoyé par jbat Voir le message
    Comment je dois faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String test(String t) {
    		return "après";
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s = new String("avant");
    s = test(s);
    System.out.println(s);

    Tout passage de paramètre en java se fait par copie. Il faut juste etre conscient que, dans le cas des objets, la variable sont toujours des références (contrairement au C++). Donc on passe une copie de la référence, ce qui fait qu'on peut tripatouiller le contenu de l'objet, l'appelant verra la différence, mais si on se contente d'assigner une nouvelle valeur à la référence, ça ne se vois pas de l'appelant:

    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 void test(List<Integer> liste){
       liste.clear();
       liste.add(9);
       liste = new ArrayList<Integer>();
       liste.add(2044);
    }
    //......
    List<Integer> liste = new ArrayList<Integer>();
    liste.add(1);
    System.out.println(liste.get(0)); // affiche 1
    test(liste);
    System.out.println(liste.get(0)); // affiche 9

Discussions similaires

  1. Methode simple pour modifier une image
    Par arsenik7 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 02/02/2006, 08h22
  2. Un moyen pour compresser une string ?
    Par Bruno13 dans le forum Langage
    Réponses: 9
    Dernier message: 11/11/2005, 05h05
  3. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24
  4. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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