Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2530 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Passage d'arguments par référence - utilisation d'argument en sortie

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Passage d'arguments par référence - utilisation d'argument en sortie

n°227983
El_gringo
Posté le 15-10-2002 à 09:02:20  profilanswer
 

Y un truc que je comprend pas là. Je sens déja que ça va attirer les railleries, mais tant pis... :(  
En Java, les passages d'arguments à une méthode ne se font pas par copie de l'argument passé, mais par passage de la référence de l'argument passé lors de l'appel à la méthode.
Wow, g réussi à rendre compliqué ce truc tout bête moi ! :D
Enfin, bref, ceux qui connaissent m'auront compris, c déja ça... (dsl pour les autres !)
Donc logiquement, avec un tel fonctionnement, je devrais pas avoir le comportement qui j'ai ici :

Code :
  1. String strMessage = "valeur de départ";
  2. UneInstanceDUnTruc.UneMethode (strMessage);
  3. System.out.println (strMessage);


 
Sachant que UneInstanceDUnTruc.UneMethode modifie la valeur du paramètre reçu en : "nouvelle valeur", je devrais obtenir ça comme valeur à la fin. Non !?
Pourquoi ?
Comment pallier à ça, sachant que j'utilise déja la valeur de retour de UneMethode ?

mood
Publicité
Posté le 15-10-2002 à 09:02:20  profilanswer
 

n°227984
lorill
Posté le 15-10-2002 à 09:04:22  profilanswer
 

montre le code de ta méthode pour voir...

n°227986
lorill
Posté le 15-10-2002 à 09:05:10  profilanswer
 

Tiens au fait, tu sais que les String ne sont pas modifiables ?

n°227989
El_gringo
Posté le 15-10-2002 à 09:09:46  profilanswer
 

lorill a écrit a écrit :

Tiens au fait, tu sais que les String ne sont pas modifiables ?




 
Ben oui, mais la JVM simule une modification par une copie.
Bref, on peut très bien faire ça :

Code :
  1. String test = "voila";
  2. test = "voulou";
  3. System.out.println (test);


 
"voila" et "voilou" sont 2 String différentes, n'empêche que test est une référence vers la String qui m'interresse. C tout ce qu'on demande !

n°227990
lorill
Posté le 15-10-2002 à 09:11:14  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Ben oui, mais la JVM simule une modification par une copie.
Bref, on peut très bien faire ça :

Code :
  1. String test = "voila";
  2. test = "voulou";
  3. System.out.println (test);


 
"voila" et "voilou" sont 2 String différentes, n'empêche que test est une référence vers la String qui m'interresse. C tout ce qu'on demande !




 
Oui mais non.
 
 
1. test est un poiteur vers "voila".
2. test devient un pointeur vers "voilou"
une réaffectation n'a rien a voir avec une modification !

n°227991
lorill
Posté le 15-10-2002 à 09:12:09  profilanswer
 

Et en passant, si tu te contente de reaffecter dans ta méthode en esperant que ca marche, tu as un probleme avec le concept de variable locale.

n°227992
bobuse
Posté le 15-10-2002 à 09:12:18  profilanswer
 

Sinon, il y a l'attribut final qui pourrait peut-être résoudre ton pb (j'ai peur de pas bien avoir compris). C'est l'"équivalent" du const en C++, yavé d'ailleurs eu un topic enflamé la-dessus ...

n°227994
El_gringo
Posté le 15-10-2002 à 09:14:20  profilanswer
 

lorill a écrit a écrit :

montre le code de ta méthode pour voir...




 
Bah là c un truc d'exemple que g pondu de toute façon.
Le code de la méthode dans mon exemple, ça serait :[cpp]// Rend "true" si la contenu de strMessage à été changé.
public boolean (String _strMessage)
{
   if (_strMessage != null)
      _strMessage = "nouvelle valeur";
 
   return (true);
}

n°227995
El_gringo
Posté le 15-10-2002 à 09:15:05  profilanswer
 

bobuse a écrit a écrit :

Sinon, il y a l'attribut final qui pourrait peut-être résoudre ton pb (j'ai peur de pas bien avoir compris). C'est l'"équivalent" du const en C++, yavé d'ailleurs eu un topic enflamé la-dessus ...




 
Je sais, c'était moi l'instigateur du topic ! :D
EDIT : D'ailleurs t'as pas bien suivi, vu qu'on avait finalement dit que final n'est pas équivalent au const du C++ :D


Message édité par El_gringo le 15-10-2002 à 09:15:58
n°227996
El_gringo
Posté le 15-10-2002 à 09:16:38  profilanswer
 

lorill a écrit a écrit :

Et en passant, si tu te contente de reaffecter dans ta méthode en esperant que ca marche, tu as un probleme avec le concept de variable locale.




 
Donc, le paliatif, ça serait par exemple d'utiliser un StringBuffer ?


Message édité par El_gringo le 15-10-2002 à 09:16:52
mood
Publicité
Posté le 15-10-2002 à 09:16:38  profilanswer
 

n°227997
lorill
Posté le 15-10-2002 à 09:17:10  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Bah là c un truc d'exemple que g pondu de toute façon.
Le code de la méthode dans mon exemple, ça serait :[cpp]// Rend "true" si la contenu de strMessage à été changé.
public boolean (String _strMessage)
{
   if (_strMessage != null)
      _strMessage = "nouvelle valeur";
 
   return (true);
}




 
C'est bien ce que je craignais.
Bon, en Java, tous les parametres sont passés par valeur. A part pour les types de base (int, float, boolean...), tout est une réference vers une instance d'Object. Donc en fait ce que tu passes c'est la valeur d'une référence.  
 
Apres tu changes modifie une variable locale, mais tu modifie pas l'objet pointé, tu affecte juste une nouvelle référence a ton pointeur.

n°227998
lorill
Posté le 15-10-2002 à 09:18:27  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Donc, le paliatif, ça serait par exemple d'utiliser un StringBuffer ?




 
peut importe l'objet, ce qu'il faut c'est ne pas affecter un autre objet a ta variable, et modifier celui qui est référencé. Donc oui, avec un StringBuffer c'est possible, mais pas comme tu l'as ecrit.

n°227999
El_gringo
Posté le 15-10-2002 à 09:21:09  profilanswer
 

lorill a écrit a écrit :

 
 
peut importe l'objet, ce qu'il faut c'est ne pas affecter un autre objet a ta variable, et modifier celui qui est référencé. Donc oui, avec un StringBuffer c'est possible, mais pas comme tu l'as ecrit.




 
Mais, dans mon cas, ça par exemple, c ok alors j'pense :

Code :
  1. public boolean (StringBuffer _strbMessage)
  2. {
  3.    _strbMessage.setLength (0);
  4.    _strbMessage.append ("nouvelle valeur" );
  5.   return (true);
  6. }

n°228000
El_gringo
Posté le 15-10-2002 à 09:21:54  profilanswer
 

lorill a écrit a écrit :

 
 
peut importe l'objet, ce qu'il faut c'est ne pas affecter un autre objet a ta variable, et modifier celui qui est référencé. Donc oui, avec un StringBuffer c'est possible, mais pas comme tu l'as ecrit.




 
Hé, merde, j'avais pas vu : je suis pas un boulet !!!! :(

n°228002
lorill
Posté le 15-10-2002 à 09:23:07  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Mais, dans mon cas, ça par exemple, c ok alors j'pense :

Code :
  1. public boolean (StringBuffer _strbMessage)
  2. {
  3.    _strbMessage.setLength (0);
  4.    _strbMessage.append ("nouvelle valeur" );
  5.   return (true);
  6. }






ouais, comme ca ca marche, vu que tu modifies l'objet.

n°228003
El_gringo
Posté le 15-10-2002 à 09:28:51  profilanswer
 

J'la refait :  

Hé, merde, j'avais pas vu : je suis pas un boulet !!!!

n°228004
darklord
You're welcome
Posté le 15-10-2002 à 09:30:05  profilanswer
 

El_gringo t'es trop fort  [:xp1700]


---------------
Just because you feel good does not make you right
n°228005
lorill
Posté le 15-10-2002 à 09:32:31  profilanswer
 

El_Gringo a écrit a écrit :

J'la refait :  

Hé, merde, j'avais pas vu : je suis pas un boulet !!!!






 
Ben si, quand même. Mais c'est pas par rapport a ce topic, comme le sais sans doute :D

n°228006
El_gringo
Posté le 15-10-2002 à 09:32:42  profilanswer
 

DarkLord a écrit a écrit :

El_gringo t'es trop fort  [:xp1700]  




 
...à propos de la question que j'viens de poser ?

n°228007
El_gringo
Posté le 15-10-2002 à 09:33:43  profilanswer
 

lorill a écrit a écrit :

 
 
Ben si, quand même. Mais c'est pas par rapport a ce topic, comme le sais sans doute :D




 
Ben... par rapport à quoi alors ? l'histoire du type qui voulais virer les pubs de son applet !?

n°228008
El_gringo
Posté le 15-10-2002 à 09:34:45  profilanswer
 

DarkLord a écrit a écrit :

El_gringo t'es trop fort  [:xp1700]  




 
tu m'emmerde Dark, tu m'emmerdes... :sarcastic:

n°228009
lorill
Posté le 15-10-2002 à 09:35:04  profilanswer
 

El_Gringo a écrit a écrit :

 
Ben... par rapport à quoi alors ? l'histoire du type qui voulais virer les pubs de son applet !?




 
 :jap:  
 
Edit: si ca peut te rassurer, lis ca :
http://forum.hardware.fr/forum2.ph [...] at=&print=


Message édité par lorill le 15-10-2002 à 09:36:40
n°228011
El_gringo
Posté le 15-10-2002 à 09:38:42  profilanswer
 

lorill a écrit a écrit :

 
 
 :jap:  
 
Edit: si ca peut te rassurer, lis ca :
http://forum.hardware.fr/forum2.ph [...] at=&print=




 
En fait, ça m'énervait de voir écrire : "c'est inderdit donc il faut pas le faire !"
J'trouve ça un peu nul.
Le pire c que j'avais fini par dire que sur ce coup là j'avais tord ! :(

n°228013
darklord
You're welcome
Posté le 15-10-2002 à 09:39:48  profilanswer
 

El_Gringo a écrit a écrit :

 
 
tu m'emmerde Dark, tu m'emmerdes... :sarcastic:  




 
 [:titprem]  :hello:


---------------
Just because you feel good does not make you right
n°228015
El_gringo
Posté le 15-10-2002 à 09:41:17  profilanswer
 

lorill a écrit a écrit :

 
 
 :jap:  
 
Edit: si ca peut te rassurer, lis ca :
http://forum.hardware.fr/forum2.ph [...] at=&print=




 
Donc tu me juges pas complètement con !? génial ! J'en ai de la chance moi !

n°228016
lorill
Posté le 15-10-2002 à 09:42:26  profilanswer
 

[:titprem]

n°228017
benou
Posté le 15-10-2002 à 09:43:59  profilanswer
 

El_Gringo a écrit a écrit :

 
 
En fait, ça m'énervait de voir écrire : "c'est inderdit donc il faut pas le faire !"



pourtant, à première vue, comme ca, ca parait plutot logique ...

n°228021
El_gringo
Posté le 15-10-2002 à 09:47:26  profilanswer
 

benou a écrit a écrit :

 
pourtant, à première vue, comme ca, ca parait plutot logique ...




 
Bah oui, mais bon... Selon moi le droit c pas une science exacte, ça sert de base pour établire un respect mutuel, c'est tout. C'est pour ça que de juges existent et que c pas de ordinateurs qui déterminent qui aura quelle peine !
Enfin bon, on est sur un forum de programmation là, j'vais arrêter ça là...

n°228022
darklord
You're welcome
Posté le 15-10-2002 à 09:49:09  profilanswer
 

El_Gringo a écrit a écrit :

 
Bah oui, mais bon... Selon moi le droit c pas une science exacte, ça sert de base pour établire un respect mutuel, c'est tout. C'est pour ça que de juges existent et que c pas de ordinateurs qui déterminent qui aura quelle peine !



 
putain le truc qui a RIEN à voir :D


---------------
Just because you feel good does not make you right
n°228029
El_gringo
Posté le 15-10-2002 à 09:52:51  profilanswer
 

DarkLord a écrit a écrit :

 
 
putain le truc qui a RIEN à voir :D




 
Ouais, c bien ce dont j'avais peur sur un forum de programmation...
C'est pas parce qu'on sait programmer qu'on sais réfléchir sur autre chose !
 :D

n°228034
darklord
You're welcome
Posté le 15-10-2002 à 09:55:39  profilanswer
 

réfléchir  :sarcastic:  
 
bon allez laisse tomber


---------------
Just because you feel good does not make you right
n°228042
benou
Posté le 15-10-2002 à 10:05:18  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Ouais, c bien ce dont j'avais peur sur un forum de programmation...
C'est pas parce qu'on sait programmer qu'on sais réfléchir sur autre chose !
 :D  




c'est marrant, j'ai du mal à apprécier un smiley quand juste avant on vient de me traiter de gros con ... :/
 
"el_gringo" donc, je retiens.

n°228046
El_gringo
Posté le 15-10-2002 à 10:08:34  profilanswer
 

benou a écrit a écrit :

 
c'est marrant, j'ai du mal à apprécier un smiley quand juste avant on vient de me traiter de gros con ... :/
 
"el_gringo" donc, je retiens.




 
Ha non, j'en ai marre, j'veux pas m'faire des ennemis moi !
Benou c'était pas pour toi que j'ai dit ça, c'est pour Dark qui disait que ce que je dit n'a rien à voir.
Je disais ça juste histoire d'êter désagréable avec lui !
'Faut pas l'prendre pour toi !
 :hello:

n°228050
benou
Posté le 15-10-2002 à 10:11:31  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Ha non, j'en ai marre, j'veux pas m'faire des ennemis moi !
Benou c'était pas pour toi que j'ai dit ça, c'est pour Dark qui disait que ce que je dit n'a rien à voir.
Je disais ça juste histoire d'êter désagréable avec lui !
'Faut pas l'prendre pour toi !
 :hello:  




ouais, enfin en l'occurence, c'est les gars de prog que tu insultais. et puis tu sais, si dark est con, y a pas beaucoup de mecs inteligents ...
 
bref, t'aurais mieux fait de rien dire du tout.


Message édité par benou le 15-10-2002 à 10:11:53
n°228051
darklord
You're welcome
Posté le 15-10-2002 à 10:11:58  profilanswer
 

ah t'étais désagréable là? Faudra t'entrainer alors :D
 
 :hello:


---------------
Just because you feel good does not make you right
n°228054
benou
Posté le 15-10-2002 à 10:14:44  profilanswer
 

DarkLord a écrit a écrit :

ah t'étais désagréable là? Faudra t'entrainer alors :D




moi ca m'ennerve les gens qui pensent que ceux qui ne pensent pas comme eux sont cons.
C'est typiquement le genre de mec qui devient chef  :o

n°228055
darklord
You're welcome
Posté le 15-10-2002 à 10:15:24  profilanswer
 

benou a écrit a écrit :

 
moi ca m'ennerve les gens qui pensent que ceux qui ne pensent pas comme eux sont cons.
C'est typiquement le genre de mec qui devient chef  :o  




 
absolument :)


---------------
Just because you feel good does not make you right
n°228058
El_gringo
Posté le 15-10-2002 à 10:18:24  profilanswer
 

DarkLord a écrit a écrit :

ah t'étais désagréable là? Faudra t'entrainer alors :D
 
 :hello:  




 
G pas l'habitude !

n°228059
El_gringo
Posté le 15-10-2002 à 10:19:38  profilanswer
 

Ces temps, j'ai l'impression que tout l'monde est contre moi.
J'm'en vais...
évidement, que ça vous réjouisse, vous accable ou que vous vous en tapiez, je reviendrais.

n°228060
El_gringo
Posté le 15-10-2002 à 10:20:02  profilanswer
 

PS : j'ai pas l'âme d'un chef !

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Passage d'arguments par référence - utilisation d'argument en sortie

 

Sujets relatifs
Ca correspond a quoi le taux d'utilisation d'un cpu?Gérer "deux volumes" sur une meme sortie
[PHP] Passage de paramètrepassage de parametres entre une applet et une servlet
[MFC] Utilisation de la touche TAB dans un RichEditPassage d'objets Java à une application C+++
Programmer différents niveaux d'utilisation CPU[HTML, JS] mise en forme et utilisation des div, frames, ...
Utilisation de PerlUtilisation d'une union : probleme
Plus de sujets relatifs à : Passage d'arguments par référence - utilisation d'argument en sortie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR