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
:arrow: Les Règles du Forum
Version imprimable
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
:arrow: 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:
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. :roll:Code: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:Citation:
Envoyé par viena
La chaine "a" vaut toujours "bouh" après l'appel de la fonction modifCode:
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.
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 threadsafeCitation:
Envoyé par SEMPERE Benjamin
Code:
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 ;)
extrapolons.. un tableau de booléens ? :wink:
Effectivement, j'ai répondu trop vite sans réflechir. Avec les types immuables (cf doc java) ça ne fonctionnera pas. :oops:
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 ;)