Lorsqu'un objet est passé comme paramètre à une méthode, cette méthode peut modifier les propriétés de l'objet et renvoyer le résultat modifié. Alors, est-ce un laissez-passer de valeur ou un laissez-passer de référence ici?
Réponse: c'est le transfert de valeur. Le langage de programmation Java ne transmet que des paramètres avec des valeurs. Lorsqu'une instance d'objet est transmise dans une méthode en tant que paramètre, la valeur du paramètre est une copie de la référence de l'objet. Poignant le même objet, le contenu de l'objet peut être modifié dans la méthode appelée, mais la référence de l'objet (et non une copie de la référence) ne changera jamais.
Les paramètres Java, qu'ils soient des types primitifs ou des types de référence, passent toutes les copies (il y a un autre dicton est de passer des valeurs, mais il est préférable de comprendre que passer des copies et passer des valeurs est généralement relatif aux adresses de passage).
Si le type de paramètre est un type primitif, le passé est une copie de ce paramètre, c'est-à-dire la valeur du paramètre d'origine, qui est la même que la valeur passée mentionnée précédemment. Si la valeur de la copie est modifiée dans la fonction, la valeur d'origine ne sera pas modifiée.
Si le type de paramètre est un type de référence, la copie de ce paramètre de référence est transmise, et cette copie stocke l'adresse du paramètre. Si l'adresse de cette copie n'est pas modifiée dans la fonction, mais que la valeur dans l'adresse est modifiée, le changement dans la fonction affectera les paramètres passés. Si l'adresse de la copie est modifiée dans la fonction, comme une nouvelle, la copie pointe vers une nouvelle adresse. À l'heure actuelle, le paramètre entrant pointe toujours vers l'adresse d'origine, de sorte que la valeur du paramètre ne sera pas modifiée.
exemple:
classe publique Paramtest {public static void main (String [] args) {/ ** * test 1: les méthodes ne peuvent pas modifier les paramètres numériques * / System.out.println ("Tester TripleValue:"); Double pour cent = 10; System.out.println ("avant: pour cent =" + pour cent); triplevalue (pour cent); System.out.println ("After: pour pour cent =" + pour cent); / ** * Test 2: les méthodes peuvent modifier l'état des paramètres d'objet * / System.out.println ("/ ntesting Triplesalary:"); Employé Harry = nouvel employé ("Harry", 50000); System.out.println ("avant: salaire =" + harry.getsalary ()); Triplesalaire (Harry); System.out.println ("After: salary =" + harry.getsalary ()); / ** * Test 3: Les méthodes ne peuvent pas joindre de nouveaux objets aux paramètres d'objet * / System.out.println ("/ ntestting swap:"); Employé A = nouvel employé ("Alice", 70000); Employé B = nouvel employé ("Bob", 60000); System.out.println ("avant: a =" + a.getName ()); System.out.println ("avant: b =" + b.getName ()); échange (a, b); System.out.println ("After: a =" + a.getName ()); System.out.println ("After: b =" + b.getName ()); } Swap de void statique privé (Employé X, Employé y) {Employee Temp = X; x = y; y = temp; System.out.println ("Fin de la méthode: x =" + x.getName ()); System.out.println ("Fin de la méthode: y =" + y.getName ()); } private statique void triplesalary (employé x) {x.Raisalary (200); System.out.println ("Fin de la méthode: salaire =" + x.getsalary ()); } private static void tripleValue (double x) {x = 3 * x; System.out.println ("Fin de la méthode x =" + x); }}Afficher les résultats:
Test TripleValue: Avant: pourcentage = 10,0 End de la méthode x = 30,0 ajusté: pourcentage = 10,0. a = Alice // La référence elle-même n'est pas échangée après: b = bob
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.