Il existe deux façons de transmettre des paramètres de méthode en Java, passer par valeur et passer par référence.
1. Passer par valeur
Le type de paramètre est int, long et autres types de données de base (huit types de données de base), le processus de passage de paramètres Utilisation de la méthode de copie de valeur
Extrait de code 1 :
public class Test { public static void main(String[] args) { int a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(int a) { a += 1; } }
2. 🎜>
Le type de paramètre est un type de référence et le processus de transfert de paramètres adopte la méthode de référence de copie
Extrait de code 2 :
public class Test { public static void main(String[] args) { A a = new A(5); fun(a); System.out.println(a.a);// 输出结果为6 } private static void fun(A a) { a.a += 1; } static class A { public int a; public A(int a) { this.a = a; } } }
Conclusion : Le passage par valeur ne changera pas la valeur d'origine, le passage par référence modifiera la valeur de l'objet référencéRegardez la situation suivante :
Extrait de code 3 :
public class Test { public static void main(String[] args) { Integer a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(Integer a) { a += 1; } }
Ici, nous utilisons en fait la fonction d'auto-boxing de la classe d'encapsulation de type de données de base.
Integer a = 5. Après compilation, il s'agit en fait de Integer a = Integer.valueOf(5). En regardant le code source d'Integer, cela ne change pas la valeur de l'objet d'origine, mais pointe simplement sa valeur. référence à un autre objet.
Le processus dans l'extrait de code 3 peut être représenté par la figure suivante :
modifie directement le cadre de la pile L'adresse pointe vers un autre objet, donc la valeur d'origine n'est pas modifiée.
[Cours recommandé :
Tutoriel vidéo JavaCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!