Maison >Java >javaDidacticiel >Comment les arguments sont transmis

Comment les arguments sont transmis

PHPz
PHPzoriginal
2024-08-24 06:34:08911parcourir

Deux façons de transmettre des arguments aux méthodes :

Appel par valeur :

  • Copie la valeur de l'argument dans le paramètre formel du sous-programme.
  • Les modifications apportées au paramètre dans la méthode n'affectent pas l'argument d'origine.

Appel par référence :

  • Passe une référence à l'argument, pas à la valeur.
  • Les modifications apportées au paramètre affectent l'argument d'origine dans l'appel.

Passage de type primitif :

  • Lorsqu'un type primitif (tel que int ou double) est transmis, l'appel par valeur est utilisé.
  • La méthode reçoit une copie de l'argument, donc les modifications apportées au sein de la méthode n'affectent pas la valeur d'origine.

Exemple :

class Test {
    void noChange(int i, int j) {
        i = i + j;
        j = -j;
    }
}

class CallByValue {
    public static void main(String[] args) {
        Test ob = new Test();
        int a = 15, b = 20;
        System.out.println("a and b before call: " + a + " " + b);
        ob.noChange(a, b);
        System.out.println("a and b after call: " + a + " " + b);
    }
}

Passage d'objet :
Lorsqu'un objet est passé à une méthode, Java utilise l'appel par référence.
La méthode reçoit une référence à l'objet, ce qui signifie que les modifications apportées au sein de la méthode affectent l'objet d'origine.

Exemple :

class Test {
    int a, b;
    Test(int i, int j) {
        a = i;
        b = j;
    }
    void change(Test ob) {
        ob.a = ob.a + ob.b;
        ob.b = -ob.b;
    }
}

class PassObRef {
    public static void main(String[] args) {
        Test ob = new Test(15, 20);
        System.out.println("ob.a and ob.b before call: " + ob.a + " " + ob.b);
        ob.change(ob);
        System.out.println("ob.a and ob.b after call: " + ob.a + " " + ob.b);
    }
}

Les modifications apportées à la méthode change() affectent l'objet ob passé en argument.

Différence entre les types primitifs et les objets :
Types primitifs : Passés par valeur, les modifications apportées à la méthode n'affectent pas les valeurs d'origine.
Objets : Passés par référence, les modifications apportées à la méthode affectent l'objet d'origine.

Résumé final :
La transmission d'arguments en Java peut se faire par valeur ou par référence. Les types primitifs sont transmis par valeur, tandis que les objets sont transmis par référence, ce qui entraîne des effets différents sur les arguments d'origine.

Como os argumentos são passados

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:
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