bonjour,
je voudrais créer une procédure avec plusieurs paramètres en entrée et sortie
je n'arrive pas a trouver la syntaxe
merci de m'eclairer
[ Modéré par SEMPERE Benjamin ]
Ajout d'un tag dans le titre
Les Règles du Forum
bonjour,
je voudrais créer une procédure avec plusieurs paramètres en entrée et sortie
je n'arrive pas a trouver la syntaxe
merci de m'eclairer
[ Modéré par SEMPERE Benjamin ]
Ajout d'un tag dans le titre
Les Règles du Forum
Salut,
En java, tout est passé par reference. c'est à dire que les attributs d'une methode ne sont en quelque sorte que des pointeurs vers un objet. Ce passage par reference est en fait un passage d'attribut en IO.
Donc en gros, si tu passes un objet (attention, pas un type primitif !) dans une procedure et que tu le modifies, c'est modifications seront repercutées dans ton objet initial d'appel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void main(String[] args) { String a = "bouh"; modif(a); //a vaut maintenant "bah" } public void modif(String a) { a="bah"; }
ok, donc vu que je passais quelques"int", il suffit que je passe des "Integer" a la place et ca devrait le faire alors ??
normalement, ca devrait fonctionner.
Mais attention, si dans ta methode tu fais un
Tu modifies la reference et donc... ça ne fonctionnera pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part a= new Integer(3);![]()
arfff, ok
c pour ca que ca ne marche pas
c justement ce que je viens de faire![]()
Integer est un type immuable, une fois l'objet construit, tu ne peux le modifier.
Pour ton problème, tu peux passer un tableau d'entiers.
Je suis pas d'accord avec toi sur ce sujet là, les chaines de caractères sont immutables en java donc lors de l'execution du code suivant:Envoyé par viena
La chaine "a" vaut toujours "bouh" après l'appel de la fonction modif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static void main(String[] args) { String a = "bouh"; modif(a); } public static void modif(String a) { a="bah"; }
Les Integer n'étant pas mutables (modifiables) ce ne serait de toute facon pas possible de faire une variable entrée/sortie avec.
Par contre un tableau d'Integer ou d'int, ou une structure quelconque qui a des champs int là c'est bon.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Pour modifier par référence une chaine de caractères tu peux utiliser le StringBuffer voire même StringBuilder(pour java 5) qui est plus performant car non threadsafeEnvoyé par SEMPERE Benjamin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void main(String[] args) { StringBuffer a = new StringBuffer("bouh"); modif(a); //a vaut bouhbah } public static void modif(StringBuffer a) { a.append("bah"); }
ok, donc a la place de passer des "int" en parametres, je vais passer un "tableau de int"
a la place de mes "String" je vais voir pour passer des "StringBuffer"
et pour des "boolean" ??
merci![]()
Effectivement, j'ai répondu trop vite sans réflechir. Avec les types immuables (cf doc java) ça ne fonctionnera pas.![]()
Lorsque j'ai besoin d'une méthode qui a plusieurs paramètres en E/S, je crée un objet "de transfert" contenant les paramètres à modifier:
Je trouve ça :
- plus propre
plus lisible
plus maintenable
merci tout le monde![]()
Partager