Maison > Java > javaDidacticiel > le corps du texte

Comment pouvez-vous échanger des valeurs primitives en Java malgré la limitation du passage par valeur ?

Mary-Kate Olsen
Libérer: 2024-10-27 07:47:31
original
841 Les gens l'ont consulté

How Can You Swap Primitive Values in Java Despite the Pass-by-Value Limitation?

Échange de primitives en Java : résoudre la limitation du passage par valeur

En Java, la transmission des paramètres aux méthodes se fait par valeur, ce qui signifie que les modifications apportées aux paramètres au sein de la méthode ne sont pas reflétées dans les variables d'origine. Cela peut être problématique lorsque vous essayez d'échanger les valeurs de types primitifs, tels que des entiers.

L'extrait de code ci-dessous illustre le problème :

<code class="java">public static void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>
Copier après la connexion

Après avoir exécuté cette méthode, les valeurs d'un et b restent inchangés, car la méthode n'a pas accès à la référence d'origine de ces variables.

Pour surmonter cette limitation, une approche consiste à utiliser une « astuce » qui exploite l'opérateur d'affectation Java. Le code suivant fournit un exemple :

<code class="java">public static int swap(int a, int b) {
    return a; // usage: y = swap(x, x=y);
}</code>
Copier après la connexion

Cette méthode s'appuie sur l'ordre d'évaluation dans l'opération d'affectation x=y. Tout d'abord, x est passé dans la méthode swap(), puis y est affecté à x, échangeant ainsi leurs valeurs. Le retour a renvoie simplement la valeur initiale de a, qui est désormais équivalente à y.

Une autre approche consiste à créer une méthode générique qui peut échanger n'importe quel nombre d'objets du même type :

<code class="java">public static <T> T swap(T... args) {
    return args[0]; // usage: z = swap(a, a=b, b=c, ... y=z);
}</code>
Copier après la connexion

Cette méthode prend un nombre variable d'arguments et renvoie le premier élément. Il utilise le même principe que l'exemple précédent, où l'affectation des arguments suivants échange effectivement leurs valeurs.

En employant ces techniques, les développeurs peuvent obtenir le comportement d'échange souhaité, même si Java transmet les paramètres par valeur.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!