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
Libérer: 2024-10-27 04:51:30
original
554 Les gens l'ont consulté

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

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

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

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!

source:php.cn
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