Table des matières
Échange de variables primitives en Java : surmonter le passage de valeurs
Return-Assign Pattern
Swapper générique avec paramètres variadiques
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 ?

Oct 27, 2024 am 04:51 AM

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Aug 04, 2025 pm 12:48 PM

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

Qu'est-ce qu'une impasse en Java et comment pouvez-vous l'empêcher? Qu'est-ce qu'une impasse en Java et comment pouvez-vous l'empêcher? Aug 23, 2025 pm 12:55 PM

ADEADLOCKINJAVAOCCURSWHENTWOORMORORETHREADSAREBLOCKEDEDFOREVERS, chaque avance pour la fourniture de laBerce-Organisation de la manière générale;

Comment implémenter un client TCP simple en Java? Comment implémenter un client TCP simple en Java? Aug 08, 2025 pm 03:56 PM

Importjava.ioandjava.net.socketfori / oandsocketcommunication.2.CreateasockingObjectToConnectTotheServerusingHostNAMEAndport.3.USEPRINTWRERTOSENDDATAVIATPUTSTREMANDBUFFERDREDERTOREADSERVERSPONSESESES

Comment rejoindre un éventail de chaînes à Java? Comment rejoindre un éventail de chaînes à Java? Aug 04, 2025 pm 12:55 PM

L'utilisation de String.join () (Java8) est la méthode recommandée la plus simple pour connecter les tableaux de chaîne, spécifiez simplement le séparateur directement; 2. Pour les anciennes versions de Java ou lorsque plus de contrôle est nécessaire, vous pouvez utiliser StringBuilder pour traverser et épisser manuellement; 3. StringJoiner convient aux scénarios qui nécessitent des formats plus flexibles tels que les préfixes et les suffixes; 4. Utilisation de Arrays.Stream () combinée avec des collectionneurs.joining () convient au filtrage ou à la conversion du tableau avant de rejoindre; Pour résumer, si Java8 et supérieur est utilisé, la méthode String.join () doit être préférée dans la plupart des cas, ce qui est concis et facile à lire, mais pour une logique complexe, elle est recommandée.

Comment comparer deux chaînes à Java? Comment comparer deux chaînes à Java? Aug 04, 2025 am 11:03 AM

Utilisez la méthode .equals () pour comparer le contenu de la chaîne, car == ne compare les références d'objet plutôt que le contenu; 1. Utilisez .equals () pour comparer également les valeurs de chaîne; 2. Utiliser .EqualSignoreCase () pour comparer l'ignorance du cas; 3. Utilisez .Compareto () pour comparer les chaînes dans l'ordre du dictionnaire, renvoyant 0, nombres négatifs ou positifs; 4. Utiliser .CompareToIgnoreCase () pour comparer le cas Ignorer; 5. Utilisez des objets.equals () ou de la méthode d'appel sûr pour traiter les chaînes nulles pour éviter les exceptions de pointeur nul. En bref, vous devez éviter d'utiliser == pour les comparaisons de contenu de chaîne, sauf s'il est explicitement nécessaire de vérifier si l'objet est en phase.

Comparaison des outils de construction Java: Maven vs Gradle Comparaison des outils de construction Java: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

GradleisthebetterChoiceFormostNewProjectsDuetOtsSuperiorflexibility, Performance et ModerNtoolingSupport.1.gradle’sgroovy / kotlindslismoreConcis

Comment envoyer et recevoir des messages sur un WebSocket en Java Comment envoyer et recevoir des messages sur un WebSocket en Java Aug 16, 2025 am 10:36 AM

Créez un point de terminaison WebSocket Server pour définir le chemin à l'aide de @ServeRendPoint et gérer les connexions, la réception de messages, la fermeture et les erreurs via @onOpen, @onMessage, @OnClose et @onerror; 2. Assurez-vous que les dépendances Javax.websocket-API sont introduites pendant le déploiement et enregistrées automatiquement par le conteneur; 3. Le client Java obtient WebSocketContainer via le ContainerProvider, appelle ConnectToServer pour se connecter au serveur et reçoit des messages à l'aide de la classe d'annotation @clientendpoint; 4. Utilisez la session GetBasicre

Posture correcte pour le traitement de la demande non UTF-8 Encodage dans l'application Spring Boot Posture correcte pour le traitement de la demande non UTF-8 Encodage dans l'application Spring Boot Aug 15, 2025 pm 12:30 PM

Cet article traite du mécanisme et des malentendus communs des applications de démarrage de printemps pour gérer l'encodage des demandes non UTF-8. Le noyau réside dans la compréhension de l'importance du paramètre de charme dans l'en-tête de type contenu HTTP, ainsi que le flux de traitement de caractères par défaut du flux Spring Boot. En analysant le code brouillé causé par de mauvaises méthodes de test, l'article guide les lecteurs comment simuler correctement et tester les demandes de différents encodages et explique que Spring Boot ne nécessite généralement pas de configurations complexes pour atteindre la compatibilité sous la prémisse que le client déclare correctement l'encodage.

See all articles