Bonjour,
Voici le programme suivant
Le résultat à l'affichage donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import java.io.*; public class test_passage{ public static void test(int a, int []t){ a=30; t[0]=100; }// fin de méthode test public static void main(String[]args){ int a= 2; int[]t = new int[3]; for(int i=0; i<3;i++){ t[i] = 2 * i;}// fin de for System.out.println("avant test a vaut " + a); System.out.println("avant test t vaut " + t[0] + " , " + t[1]+ " et " +t[2]); test(a,t); System.out.println("apres test t vaut " + t[0] +","+ t[1]+ " et " +t[2]); System.out.println("apres test a vaut " + a); }// fin de main } // fin de classe
Il est expliqué que t est une variable structurée et que donc son passage est fait par référence( ou par adresse)Toutes les modifications effectuées sur "t" dans la méthode test sont effectives sur le "t" de la méthode main, puisq 'il s'agit du même tableau.avant test a vaut 2
avant test t vaut 0,2 et 4
après test t vaut 100,2 et 4
après test a vaut 2
"a" est une variable de type simple et son passage est fit par valeur.
toutes les modifications effectuées sur "a" dans la méthide test n'ont aucun impact sur le "a" de la méthode main.
En fait , si j'ai bien compris, quand le programme va appeler la méthode test
le paramètre a aura pour valeur "2"
En fait puisque le paramètre "a" aura pour valeur 2, l'affectation 2=30 , ne pourra pas se produire car 2 n'est pas l'adresse mémoire de la variable "a" mais sa valeur.
pouvez vous me le confirmer.
Avec mes remerciements.
Cordialement.
Nathalie
Partager