Comment échanger deux variables de chaîne en Java sans utiliser une troisième variable
Comment puis-je échanger deux variables de chaîne de caractères en Java sans l'aide d'une troisième variable, c'est à dire la variable temp?
String a = "one"
String b = "two"
String temp = null;
temp = a;
a = b;
b = temp;
Mais ici, il ya une troisième variable. Nous avons besoin d'éliminer l'utilisation de la troisième variable.
source d'informationauteur user1281029
Vous devez vous connecter pour publier un commentaire.
Le faire comme ça, sans l'aide d'une troisième variable:
//prises de cette réponse: https://stackoverflow.com/a/16826296/427413
Cela fonctionne parce que le langage Java garanties (Java Language Specification, Java SE 7 Édition, section 15.12.4.2) que tous les arguments sont évalués de gauche à droite (contrairement à certains autres langues, où l'ordre d'évaluation n'est pas défini), de sorte que l'ordre d'exécution est:
b
est évalué afin d'être passé comme premier argument de la fonctionb = a
est évaluée et le résultat (la nouvelle valeur deb
) est passé comme deuxième argument de la fonctionb
et en ignorant sa nouvelle valeura
temp
. Le paramètrex
fonctionne commetemp
mais il a l'air plus propre parce que vous définir la fonction une fois et vous pouvez l'utiliser partout.Cela fonctionnera aussi longtemps que votre chaîne ne contient pas le caractère#. N'hésitez pas à utiliser n'importe quel autre caractère au lieu.
Vous pouvez utiliser un possible caractère Unicode, comme "\u001E" au lieu du #.
Ici vous allez. Essayez ceci:
Prendre n'importe quelle valeur en tant que chaîne de caractères dans une variable. Il sera swap.
La façon la plus simple est donnée ci-dessous:
En fait, le code dans votre question n'a pas de swap Chaîne a,b.
Vous devriez voir cette question:
Permuter deux chaînes de caractères en Java, en les transmettant à une fonction utilitaire, mais sans retour à des objets ou à l'aide de classes wrapper
Et Java est passage par valeur:
Est Java "par référence" ou de "passage par valeur"?
Jj Tuibeo de la solution fonctionne si vous ajoutez replaceFirst() et utiliser un expression régulière:
Pour La Chaîne
Méthode 1:
Méthode 2:
Pour Les Entiers
public class SwapWithoutThirdVar {
Vous pouvez le faire de cette façon.
package com.de base;
public class SwappingNoTemp {
}
Ici substring (), la méthode renvoie une chaîne vide. par conséquent , les noms peuvent être ajoutés.
Pour les chaînes: