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 :

Modifier un string


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut Modifier un string
    Bonjour,

    Je voudrais convertir un programme C++ en Java.
    J'ai une classe qui contient 2 string. Je voudrais pouvoir remplir ces string avec une méthode appartenant à une autre classe.
    En C++ il suffit de passé le pointeur des deux string à la méthode. Comme ça:
    MaMethode(&string1,&string2);

    Mais en Java, comment faire ? si je passe mes string en argument à la méthode, ils ne seront pas modifiés à la sortie de la méthode.

    Merci.

  2. #2
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    Salut,
    un objet String est Immutable, tu ne peux pas le changer excepte en le remplacant completement.

    -> String va de pair avec StringBuffer/StringBuilder (Mutable Companion), eux te permettent de modifier la valeur de ta chaine

  3. #3
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    Rien n'empeche de faire :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void maMethode(MaClasse maclasse) {
        maclasse.setMaString1("toto");
        maclasse.setMaString2("titi");
    }

  4. #4
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    Citation Envoyé par Bezout Voir le message
    Rien n'empeche de faire :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void maMethode(MaClasse maclasse) {
        maclasse.setMaString1("toto"');
        maclasse.setMaString2("titi");
    }
    ok, mais si MaClasse n'est fait que contenir une String, autant re-utilisee une classe de l'api java dont c'est le role, non?

  5. #5
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    ?????????????????

  6. #6
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    je voulais dire:
    est-ce que tu proposais de definir une classe, qui aurait comme attribut une/des String, un objet de cette classe pouvant alors etre passe en argument a la methode qui pourrait alors modifier l'etat de cet objet (ie modifier les String) ?

    si c'est ca, je disais simplement pourquoi pas reutiliser des classe de l'api java


    EDIT: autant pour moi! j'ai lu un peu trop vite

  7. #7
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Citation Envoyé par ndp Voir le message
    ok, mais si MaClasse n'est fait que contenir une String, autant re-utilisee une classe de l'api java dont c'est le role, non?
    Pas si MaClasse est la classe originale qui contient les deux chaines en question, i.e. MaClasse n'est pas une nouvelle classe qui ne fait qu'encpsuler les deux chaines.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    En fait MaMethode() appartient à une classe MonParser qui est utilisé par plusieurs autres classes.
    Elle remplit 2 String qui peuvent appartenir à la classe qui appel MaMethode() ou elle remplit 2 String local à une autre méthode.

    Donc il faudrait que je crée une classe MaString presque vide du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class MaString{
     public String Value;
    }
    avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void maMethode(MaString str1, MaString str2) {
        str1.Value = "toto";
        str2.Value = "titi";
    }
    En l'utilisant comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaString str1;
    MaString str2;
    maMethode(str1,str2);

    Ou est ce qu'avec les StringBuffer je pourais faire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MaString str1;
    MaString str2;
    StringBuffer strBuffer1;
    StringBuffer strBuffer2;
    maMethode(strBuffer1,strBuffer2);
    str1 = strBuffer1.toString();
    str2 = strBuffer2.toString();
    Est ce que strBuffer1 et strBuffer2 seront modifié à la sortie de la méthode ?

  9. #9
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Oui car en Java la Classe String est immutable c'est à dire qu'une fois créé, une instance de cette classe ne peut pas être modifiée. Toutes les méthodes de la classe String renvoie une nouvelle instance en résultat.

    La solution pour toi pourrait être d'encapsuler tes chaines de caractère dans un objet personnalisé que tu passerai directement à ta méthode ou alors d'utiliser des StringBuffer/StringBuilder (qui elles, sont des classes mutables) à la place de String.

    Edit : grillé

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

Discussions similaires

  1. Méthode pour modifier une string.
    Par jbat dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 08/07/2010, 11h33
  2. Réponses: 3
    Dernier message: 05/06/2006, 21h14
  3. [vba]modifier un caratère dans une string
    Par megapacman dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 18h12
  4. [VB.NET] Modifier un caractère d'un string
    Par mat087 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/11/2005, 23h44
  5. [débutant]modifier des string
    Par calavera dans le forum SL & STL
    Réponses: 1
    Dernier message: 16/09/2005, 20h45

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