Maison > Java > javaDidacticiel > Pouvez-vous échanger des valeurs primitives en Java sans passer par référence ?

Pouvez-vous échanger des valeurs primitives en Java sans passer par référence ?

Linda Hamilton
Libérer: 2024-10-27 08:20:31
original
246 Les gens l'ont consulté

 Can You Swap Primitive Values in Java Without Pass by Reference?

L'absence de passage par référence en Java et son impact sur l'échange de primitives

En Java, la transmission des paramètres aux méthodes se fait par valeur, ce qui signifie que toute modification apportée aux paramètres de la méthode ne sera pas reflétée dans les variables de l'appelant. Cela pose un défi lorsque vous essayez d'échanger les valeurs de deux primitives.

Tentative d'échange de primitives avec passage par valeur

Considérez la fonction d'échange suivante en Java :

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

Cette fonction tente d'échanger les valeurs de deux entiers en créant une variable temporaire et en jonglant manuellement avec les valeurs. Cependant, après avoir appelé cette fonction, les valeurs d'origine restent inchangées en raison de la sémantique de passage par valeur de Java.

Surmonter la limitation

Pour contourner cette limitation, on peut utiliser une technique qui exploite l'approche Java du passage de paramètres. En utilisant plusieurs affectations dans la fonction swap, il est possible de réaliser efficacement l'échange :

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

// Usage: y = swap(x, x = y);</code>
Copier après la connexion

Dans cette version modifiée, la fonction swap attribue a à b, puis renvoie a. L'appelant peut ensuite attribuer la valeur de retour à y et échanger les valeurs réelles de x et y :

<code class="java">y = swap(x, x = y);</code>
Copier après la connexion

Échange générique pour plusieurs objets

Cette technique peut être généralisé pour prendre en charge l'échange de plusieurs objets du même type :

<code class="java"><T> T swap(T... args) {
    return args[0];
}

// Usage: z = swap(a, a = b, b = c, ... y = z);</code>
Copier après la connexion

En s'appuyant sur l'exécution séquentielle des affectations et du passage de paramètres, il est possible d'échanger efficacement des objets en Java, fournissant ainsi une solution de contournement au manque de Fonctionnalité "passer par référence".

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