Maison > 类库下载 > java类库 > 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
Libérer: 2019-04-08 14:56:18
avant
6311 Les gens l'ont consulté

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;
    }
}
Copier après la connexion

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;
        }
    }
}
Copier après la connexion

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;
    }

}
Copier après la connexion


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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal