Maison >Java >javaDidacticiel >Comment pouvez-vous échanger des variables primitives en Java lorsque la transmission des paramètres se fait par valeur ?

Comment pouvez-vous échanger des variables primitives en Java lorsque la transmission des paramètres se fait par valeur ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 04:51:30568parcourir

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

Échange de variables primitives en Java : surmonter le passage de valeurs

En Java, le passage de paramètres se fait intrinsèquement par valeur, ce qui pose un défi lorsque l'on tente d'échanger des variables primitives au sein d'une méthode . Une implémentation naïve, telle que :

<code class="java">void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>

ne modifiera pas réellement les variables d'origine en dehors de la méthode. Pour résoudre ce problème, voici deux approches non conventionnelles :

Return-Assign Pattern

Cette technique permet l'échange en exploitant l'ordre des opérations dans les appels de méthode :

<code class="java">int swap(int a, int b) {  // usage: y = swap(x, x=y);
    return a;
}</code>

Quand en appelant swap(x, x=y), la valeur de x sera transmise à swap avant l'affectation à x. Ainsi, lorsque a est renvoyé et affecté à y, il échange effectivement les valeurs de x et y.

Swapper générique avec paramètres variadiques

Pour une solution plus généralisée, une méthode générique peut être définie qui peut échanger n'importe quel nombre d'objets du même type :

<code class="java"><T> T swap(T... args) {   // usage: z = swap(a, a=b, b=c, ... y=z);
    return args[0];
}</code>

Appeler cette méthode comme z = swap(a, a=b, b=c) échangera les valeurs de a, b et c , attribuant la valeur finale à z.

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