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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[java] probleme avec un passage d'argument...

n°582000
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 03-12-2003 à 00:47:52  profilanswer
 

Reprise du message précédent :
C'est super, personne pige rien à ce que racontent les autres [:ddr555]
 
Bon ba moi j'm'en vais, il pue la mort ce topic :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 03-12-2003 à 00:47:52  profilanswer
 

n°582001
chrisbk
-
Posté le 03-12-2003 à 00:49:00  profilanswer
 

benou a écrit :


nan mais là tu prend le cas d'un type primitif, c'est pas ce qu'il y a mieux comme exemple :o


 
y'a bien que java pour se battre avec les types primitifs

n°582002
schnapsman​n
Zaford Beeblefect
Posté le 03-12-2003 à 00:49:40  profilanswer
 

On récapitule:
 
En java il n'y a que deux types de variables: les types primitifs et les références (qui sont des pointeurs en fait).
 
Il n'y a qu'une seule méthode de passage de paramètre: par valeur. Cela signifie que les valeurs des variables passées en paramètre sont recopiées à chaque appel de méthode  :lol:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°582003
chrisbk
-
Posté le 03-12-2003 à 00:50:16  profilanswer
 

SchnapsMann a écrit :

On récapitule:
 
En java il n'y a que deux types de variables: les types primitifs et les références (qui sont des pointeurs en fait).
 
Il n'y a qu'une seule méthode de passage de paramètre: par valeur. Cela signifie que les valeurs des variables passées en paramètre sont recopiées à chaque appel de méthode  :lol:  


 
vi.
enfin je vois pas ce qui te fait rigoler la dedans?

n°582005
schnapsman​n
Zaford Beeblefect
Posté le 03-12-2003 à 00:51:26  profilanswer
 

chrisbk a écrit :


 
vi.
enfin je vois pas ce qui te fait rigoler la dedans?


 
que pleins de proclamés javeux ne savaient même pas ça  :o


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°582006
benou
Posté le 03-12-2003 à 00:52:41  profilanswer
 

Taiche a écrit :

Citation :

Quand tu appelles une méthode en java et que tu passes en arguments des objets, c'est le pointeur que tu passes : la veleur de la variable, c'est à dire l'adresse mémoire. C'est un passage par valeur !


Et après tu gueules qu'on mélange tout [:kiki]


 
mais quoi heu [:sisicaivrai] c'est vrai ce que je dis ...
 

Taiche a écrit :


OK, bin chu d'accord que mon += était pas du tout judicieux. Faisons un .replace('h', 'x') à la place [:spamafote]


 
ca revient au même : la méthode replace retourne une nouvelle String qu'il faudra que tu affectes, ca ne modifie pas l'objet, c'est donc aussi totalement différent du cas du add() de la arraylist... C'est le principe des objets immuable : les méthodes ne modifient pas leur état interne [:spamafote]
Mais java lui ne fait pas de différence entre les objets immuable et les non immubales [:spamafote]
 

Taiche a écrit :

Si on est déjà 2 à pas tout piger c'que tu racontes (p'têt 3 avec SchnapsMann, j'sais pas), c'est p'têt qu'y a un problème dans la formulation, non ? [:ddr555]


oui surement, mais c'est pas simple à expliquer par écris. Si t'étais à côté je te ferai un schéma ca irait plus vite !


---------------
ma vie, mon oeuvre - HomePlayer
n°582008
benou
Posté le 03-12-2003 à 00:54:06  profilanswer
 

SchnapsMann a écrit :

En java il n'y a que deux types de variables: les types primitifs et les références (qui sont des pointeurs en fait).
 
Il n'y a qu'une seule méthode de passage de paramètre: par valeur. Cela signifie que les valeurs des variables passées en paramètre sont recopiées à chaque appel de méthode


ben oui. c'est ce que j'essaye de dire en bcp plus de mots depuis tout à l'heure ....

SchnapsMann a écrit :


que pleins de proclamés javeux ne savaient même pas ça  :o  


ouais ... je suis étonné moi aussi [:mlc]


Message édité par benou le 03-12-2003 à 00:55:10

---------------
ma vie, mon oeuvre - HomePlayer
n°582011
schnapsman​n
Zaford Beeblefect
Posté le 03-12-2003 à 00:56:24  profilanswer
 

benou a écrit :


ben oui. c'est ce que j'essaye de dire en bcp plus de mots depuis tout à l'heure ....


 
oui, mais j'ai la clarté de la langue française pour moi  :sol:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°582014
the real m​oins moins
Posté le 03-12-2003 à 01:00:18  profilanswer
 

ouais en attendant, j'attends une réponse à ma question.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582019
the real m​oins moins
Posté le 03-12-2003 à 01:05:57  profilanswer
 

on fait moins les malins hein :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 03-12-2003 à 01:05:57  profilanswer
 

n°582020
schnapsman​n
Zaford Beeblefect
Posté le 03-12-2003 à 01:07:30  profilanswer
 

the real moins moins a écrit :

on fait moins les malins hein :o


 
mais arrete, il y a tellement rien à comprendre dans ta fausse question que je n'en saisit pas la difficulté  :??:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°582022
the real m​oins moins
Posté le 03-12-2003 à 01:08:06  profilanswer
 

ouais ok.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582023
chrisbk
-
Posté le 03-12-2003 à 01:11:54  profilanswer
 

skoi la question ?

n°582025
benou
Posté le 03-12-2003 à 01:13:16  profilanswer
 

chrisbk a écrit :

skoi la question ?


+1  
pas vu de question moi :/


---------------
ma vie, mon oeuvre - HomePlayer
n°582026
the real m​oins moins
Posté le 03-12-2003 à 01:16:00  profilanswer
 

voir mon deuxieme bout de code


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582027
the real m​oins moins
Posté le 03-12-2003 à 01:16:53  profilanswer
 
n°582028
benou
Posté le 03-12-2003 à 01:17:28  profilanswer
 

the real moins moins a écrit :

et là "benou à raison".
ben c'est super con, mais je suis pas sur de piger pourquoi dans mon 1er exemple, l'objet sur lequel pointe ma reference est modifié par ma methode setText, alors que dans le 2e la nouvelle instance semble locale à cette foutue méthode, alors que la reference vient du dehors...


j'avais loupé ce post ...
 
ta question c'est ca alors  ?
 
c'est juste que ta phrase "la référence vient du dehors" est fausse : ce n'est pas la même référence : c'est une copie de la référence qui pointe donc vers le même objet. [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°582030
chrisbk
-
Posté le 03-12-2003 à 01:19:55  profilanswer
 

benou a écrit :


j'avais loupé ce post ...
 
ta question c'est ca alors  ?
 
c'est juste que ta phrase "la référence vient du dehors" est fausse : ce n'est pas la même référence : c'est une copie de la référence qui pointe donc vers le même objet. [:spamafote]


 
c'est malin d'utiliser ces termes ca embrouille, utilise plutot pointeur

n°582031
the real m​oins moins
Posté le 03-12-2003 à 01:23:20  profilanswer
 

benou a écrit :


j'avais loupé ce post ...
 
ta question c'est ca alors  ?
 
c'est juste que ta phrase "la référence vient du dehors" est fausse : ce n'est pas la même référence : c'est une copie de la référence qui pointe donc vers le même objet. [:spamafote]


nnnndddjjjju ok.
 
c'est troublant quand meme, qu'on puisse modifier un objet passé en argument, alors qu'on ne peut pas le réaffecter non?
je veux dire, expliqué comme ça, oui, c'est clair, mais dans l'absolu, en codant sans reflechir je trouve ça troublant...
 
surtout si tu modifies du code existant sans trop faire gaffe, que tu remplaces un bete appel à un setter par une affectation, sans penser que l'objet passé est réutilisé par ailleurs apres l'appel à la méthode


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582033
benou
Posté le 03-12-2003 à 01:24:45  profilanswer
 

chrisbk a écrit :


c'est malin d'utiliser ces termes ca embrouille, utilise plutot pointeur


dans mon esprit c'est la même chose ... je sais qu'en C++ y a un différence (je sais plus laquelle d'ailleur) mais bon en java queand je dis référence, je veux dire valeur de la variable qui stocke l'adresse mémoire d'un objet.


---------------
ma vie, mon oeuvre - HomePlayer
n°582034
chrisbk
-
Posté le 03-12-2003 à 01:25:54  profilanswer
 

benou a écrit :


dans mon esprit c'est la même chose ... je sais qu'en C++ y a un différence (je sais plus laquelle d'ailleur) mais bon en java queand je dis référence, je veux dire valeur de la variable qui stocke l'adresse mémoire d'un objet.


 
ben le pb c'est qu'apres tu va parler de passage par reference, bonjour la tambouille

n°582035
benou
Posté le 03-12-2003 à 01:29:25  profilanswer
 

the real moins moins a écrit :


nnnndddjjjju ok.
 
c'est troublant quand meme, qu'on puisse modifier un objet passé en argument, alors qu'on ne peut pas le réaffecter non?
je veux dire, expliqué comme ça, oui, c'est clair, mais dans l'absolu, en codant sans reflechir je trouve ça troublant...


ben nan, moi ca m'a jamais troublé ...
 
au contraire, c'est pas rare que je me serve de ca pour éviter de redéclarer une autre variable ...
 
genre :

Code :
  1. public void foo(String s) {
  2.    // s devrait commencer par "/" si c'est pas le cas, on l'ajoute
  3.    if ( ! s.startsWith("/" )) {
  4.       s = "/" + s;
  5.    }
  6.    ...
  7. }


 
plutot que de redélarer une variable qui contiendra la valeur "corrigée" de s, je me sers de la même variable, en sachant que ca n'aura pas de conséquence à l'extérieur de la méthode.


---------------
ma vie, mon oeuvre - HomePlayer
n°582036
benou
Posté le 03-12-2003 à 01:31:09  profilanswer
 

chrisbk a écrit :


ben le pb c'est qu'apres tu va parler de passage par reference, bonjour la tambouille


parler de passage par référence n'a pas vrament de sens en java [:spamafote] Ca ne parle qu'à ceux qui viennent du C++ pour leur faire comprendre qu'on fait pas une copie de l'objet ...


---------------
ma vie, mon oeuvre - HomePlayer
n°582037
the real m​oins moins
Posté le 03-12-2003 à 01:32:28  profilanswer
 

oui MAIS lis la 2e partie de mon post.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582038
benou
Posté le 03-12-2003 à 01:39:20  profilanswer
 

the real moins moins a écrit :

oui MAIS lis la 2e partie de mon post.


Citation :

surtout si tu modifies du code existant sans trop faire gaffe, que tu remplaces un bete appel à un setter par une affectation, sans penser que l'objet passé est réutilisé par ailleurs apres l'appel à la méthode


ben là je comprend pas ton point de vue. Remplacer un appel de méthode par une affectation, c'es pas rien ! c'est 2 opérations qui n'ont rien à voir ...
Faut pas s'étonner si ca se comporte pas pareil derrière [:spamafote]
 
Mais imagine seulement les effets de bord si ce que tu croyais était réellement possible ! Ce serait monstrueux ! Il aurait fallu faire comme en C++ et ajouter la possibilité de dire qu'un passage par référence pouvait être constant de façon à indiquer qu'on ne modifie pas la référence [:mlc] C'est automatique en java ... c'est bien plus simple.
Par contre, ca oblige à wrapper l'objet si ce qu'on veut faire est modifier la référence utilisé lors de l'appel de méthode ...


---------------
ma vie, mon oeuvre - HomePlayer
n°582040
chrisbk
-
Posté le 03-12-2003 à 01:40:44  profilanswer
 

benou a écrit :


 
Mais imagine seulement les effets de bord si ce que tu croyais était réellement possible ! Ce serait monstrueux ! Il aurait fallu faire comme en C++ et ajouter la possibilité de dire qu'un passage par référence pouvait être constant de façon à indiquer qu'on ne modifie pas la référence [:mlc] C'est automatique en java ... c'est bien plus simple.


houla

Citation :


Par contre, ca oblige à wrapper l'objet si ce qu'on veut faire est modifier la référence utilisé lors de l'appel de méthode ..


 
et sans generique bonjour la fete :/
c# roxor [:udok]


Message édité par chrisbk le 03-12-2003 à 01:42:29
n°582041
benou
Posté le 03-12-2003 à 01:42:07  profilanswer
 


je suis d'accord que pour un progueux C++, ca doit avoir du mal à passer. C'est juste mon avis ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°582042
chrisbk
-
Posté le 03-12-2003 à 01:42:44  profilanswer
 

benou a écrit :


je suis d'accord que pour un progueux C++, ca doit avoir du mal à passer. C'est juste mon avis ;)


 
non c'est juste que c'est n'imp :)

n°582044
benou
Posté le 03-12-2003 à 01:44:40  profilanswer
 

chrisbk a écrit :


non c'est juste que c'est n'imp :)


ha bon [:dawa]
 
ben pourtant le "const &" est à peu près un équivalent de ce qui est fait en java nan ?


---------------
ma vie, mon oeuvre - HomePlayer
n°582048
chrisbk
-
Posté le 03-12-2003 à 01:48:23  profilanswer
 

benou a écrit :


ha bon [:dawa]
 
ben pourtant le "const &" est à peu près un équivalent de ce qui est fait en java nan ?


 
nan :D
y'a pas d'equivalent au const en java (jamais trop su ce que faisait final exactement)
 
y'a un truc que C++ a et pas Java : l'operateur de recopie
 

Code :
  1. void machin(roger &a, roger b)
  2. {
  3. a=b; //ici y'a appel de l'operateur de recopie
  4. }


Message édité par chrisbk le 03-12-2003 à 01:49:18
n°582049
the real m​oins moins
Posté le 03-12-2003 à 01:48:27  profilanswer
 

benou a écrit :


Citation :

surtout si tu modifies du code existant sans trop faire gaffe, que tu remplaces un bete appel à un setter par une affectation, sans penser que l'objet passé est réutilisé par ailleurs apres l'appel à la méthode


ben là je comprend pas ton point de vue. Remplacer un appel de méthode par une affectation, c'es pas rien ! c'est 2 opérations qui n'ont rien à voir ...
Faut pas s'étonner si ca se comporte pas pareil derrière [:spamafote]
 
Mais imagine seulement les effets de bord si ce que tu croyais était réellement possible ! Ce serait monstrueux ! Il aurait fallu faire comme en C++ et ajouter la possibilité de dire qu'un passage par référence pouvait être constant de façon à indiquer qu'on ne modifie pas la référence [:mlc] C'est automatique en java ... c'est bien plus simple.
Par contre, ca oblige à wrapper l'objet si ce qu'on veut faire est modifier la référence utilisé lors de l'appel de méthode ...


 
ben, mtnt que je sais que c une copie de la reference qui est passée à la methode, je pige, mais si je croyais que ct la reference elle meme, pouet, je pouvais croire qu'une affectation marchait aussi.
stout :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°582058
benou
Posté le 03-12-2003 à 01:54:00  profilanswer
 

chrisbk a écrit :


nan :D
y'a pas d'equivalent au const en java (jamais trop su ce que faisait final exactement)


 
je parlais du const dans les arguments de fonction.  
ca : (je suis plus sûr de la syntaxe)

Code :
  1. void f(const Toto& a) { ...}


 
au final ca revient au même que le passage par copie de pointeur quen java nan ? tu passes le paramêtre par référence et cette référence n'est pas modifiable à l'intérieur de la méthode ce qui te garanti que la référence n'est pas modifiée, mais l'état interne de l'objet lui peut l'avoir été ...
enfin je crois ...
 

chrisbk a écrit :


y'a un truc que C++ a et pas Java : l'operateur de recopie

Code :
  1. void machin(roger &a, roger b)
  2. {
  3. a=b; //ici y'a appel de l'operateur de recopie
  4. }




ben c'est parce que y en a bcp moins besoin justement parce que y a pas de recopie à tout bout de champ. Si t'as besoin d'un copie de l'objet, tu fais un clone() ...


---------------
ma vie, mon oeuvre - HomePlayer
n°582063
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 03-12-2003 à 01:57:24  profilanswer
 

benou a écrit :


au final ca revient au même que le passage par copie de pointeur quen java nan ? tu passes le paramêtre par référence et cette référence n'est pas modifiable à l'intérieur de la méthode ce qui te garanti que la référence n'est pas modifiée, mais l'état interne de l'objet lui peut l'avoir été ...


"Les informations annonçant que quelque chose n'a pas eu lieu m'intéressent toujours pour la bonne raison que, comme vous le savez, ce sont des nouvelles connues; il y a des choses que nous savons que nous savons"
[:dawa]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°582064
chrisbk
-
Posté le 03-12-2003 à 01:58:10  profilanswer
 

benou a écrit :


 
je parlais du const dans les arguments de fonction.  
ca : (je suis plus sûr de la syntaxe)

Code :
  1. void f(const Toto& a) { ...}




 
ca ca veut dire que tu ne peux pas modifier les champs de a ni appeler aucune de ses fonctions non const. et gaffe, si tu fais une affectation dessus tu appeleras l'operateur de recopie (= fonction non const = compilo qui rale)
 
 

Citation :

au final ca revient au même que le passage par copie de pointeur quen java nan ? tu passes le paramêtre par référence et cette référence n'est pas modifiable à l'intérieur de la méthode ce qui te garanti que la référence n'est pas modifiée, mais l'état interne de l'objet lui peut l'avoir été ...
enfin je crois ...


 
le petit champolion est demandé a la caisse numéro 2 [:xx_xx]
heuh nan ca c'est pas faisable en java, de meme que l'eq Java n'est possible en C++ que via des pointeurs
 
 
 
 
 

benou a écrit :


ben c'est parce que y en a bcp moins besoin justement parce que y a pas de recopie à tout bout de champ. Si t'as besoin d'un copie de l'objet, tu fais un clone() ...


 
ben on en fait pas non plus a tout bout de champ en C++, on evite meme a mort

n°582066
benou
Posté le 03-12-2003 à 01:58:44  profilanswer
 

Taiche a écrit :


"Les informations annonçant que quelque chose n'a pas eu lieu m'intéressent toujours pour la bonne raison que, comme vous le savez, ce sont des nouvelles connues; il y a des choses que nous savons que nous savons"
[:dawa]


hein ? [:dawa]


---------------
ma vie, mon oeuvre - HomePlayer
n°582070
chrisbk
-
Posté le 03-12-2003 à 02:00:16  profilanswer
 


 
tu viens de resumer son post :jap:

n°582072
benou
Posté le 03-12-2003 à 02:00:47  profilanswer
 

chrisbk a écrit :


ca ca veut dire que tu ne peux pas modifier les champs de a ni appeler aucune de ses fonctions non const. et gaffe, si tu fais une affectation dessus tu appeleras l'operateur de recopie (= fonction non const = compilo qui rale)
 


ha ok, je me plantais ... autant pour moi ...
 
y a pas moyen de placer le const différemant pour que ca fasse ce que je voulais dire ?


---------------
ma vie, mon oeuvre - HomePlayer
n°582076
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 03-12-2003 à 02:02:46  profilanswer
 


Bin j'peux faire plus simple, stu veux :o
"Nous savons aussi qu'il y a des choses inconnues; ce qui revient à dire que nous savons qu'il y a certaines choses dont nous ne savons rien. Mais il existe aussi des nouvelles inexistantes que nous ne connaissons pas - ce sont celles dont nous ignorons si nous les connaissons."


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°582078
chrisbk
-
Posté le 03-12-2003 à 02:03:15  profilanswer
 

benou a écrit :


ha ok, je me plantais ... autant pour moi ...
 
y a pas moyen de placer le const différemant pour que ca fasse ce que je voulais dire ?


 
ben j'avais reussi a comprendre que tu te plantais, mais de la a savoir ce que tu voulais exactement dire [:gratgrat]
 
de toute facon on code pas en C++ comme on code en Java puisque en C++ = entre deux objets (ou ref d'objets) signifie copie d'objet alors qu'en java ca veut dire copie de pointeur
 
ls refs du c++ c pas comme les "pointeurs" (si je puis dire) de java (par contre les pointeurs du C/C++ sont bpc plus proche de java, syntaxe mise de coté)


Message édité par chrisbk le 03-12-2003 à 02:06:06
n°582085
benou
Posté le 03-12-2003 à 02:12:30  profilanswer
 

ok.
 
bha c'est pas grave. laissons tomber le rapprochement du java et du C++
 
de toute façon on mélange pas les serviettes et les torchons :o
[:ddr555]


Message édité par benou le 03-12-2003 à 02:12:47

---------------
ma vie, mon oeuvre - HomePlayer
n°582086
chrisbk
-
Posté le 03-12-2003 à 02:14:29  profilanswer
 

benou a écrit :

ok.
 
bha c'est pas grave. laissons tomber le rapprochement du java et du C++
 
de toute façon on mélange pas les serviettes et les torchons :o
[:ddr555]


 
tout a fait
un langage chiant des cake avec les types primitifs ne devraient meme pas meriter attention :jap:
 
[:ddr555]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[ASP] fileexists problemeprobleme d'upload
Passage MySql à fichier SYLK (compatible excel) et inverse (PHP)[VB]Passage de DAO+Jet à DAO+ODBCDirect
Probleme calculProbleme en asp
probleme avec les session [RESOLU]Probleme avec PI ...
passage de std::string (ou std::vector<char>) à bit_vector (ou bitset)Probleme d'upload
Plus de sujets relatifs à : [java] probleme avec un passage d'argument...


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