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.
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![]()
extrapolons.. un tableau de booléens ?![]()
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![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager