Maison  >  Article  >  类库下载  >  Deux façons de transmettre les paramètres de la méthode Java

Deux façons de transmettre les paramètres de la méthode Java

little bottle
little bottleavant
2019-04-08 13:43:206267parcourir

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 :

Il s'agit évidemment d'un transfert de référence, pourquoi la valeur de l'objet n'est-elle pas modifié?
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 Java

]

Ce 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer