不定义第三个变量,如何交换两个变量的值?

时间:2021-07-12 23:19:07

对于初学者来说,交换两个变量的值是一个很经典的算法。它实现起来很简单。

int a=1, b=5;

int t;

t=a;

a=b;

b=t;

很简单吧。但是,你有没有想过,如果不定义第三个变量,怎么交换两个值呢?不定义第三个变量,如何交换两个变量的值?

1.数字型。

数字型的变量可以直接相加,利用这个思路可以把b的值先暂存到a那里。看代码:

int a=1, b=5;

a = a + b;

//将a,b的值全部存放在a里, a=6

b = a – b;

//a的值减去b的值就是原先a的值了,所以把原先a 的值赋给了b, b=1

a = a – b;

//现在的a还是相加后的a ,b已是交换后的b , a-b就是将a,b的和减去原先a的值,就剩下原先b的值了,所以a=6-1=5

OK !~ 朋友们可以试试减法和乘除法

不定义第三个变量,如何交换两个变量的值?

2.字符串型。

在java中的对字符串处理的函数还比较多。原理也和数字型差不多,就是先将第二个字符串加到第一个字符串的末尾,然后将 第一个字符的前部分赋给第二个,后部分赋给第一个。看代码:

String str1="00";

String str2="abcd";

System.out.println("交换前 str1="+str1+" str2="+str2);

str2=str2+str1; //合并到str2

str1=str2.substring(0,str2.length()-str1.length());

//截取前面长度为4的字符串 str1=”abcd”

str2=str2.substring(str1.length());

//截取最后长度为2的字符串 str2=”00”

System.out.println("交换后 str1="+str1+" str2="+str2);

字符串的交换也就这么简单~其他的比如char型,朋友们可以自己打开脑洞试一试,锻炼编程思维。C语言还可以用指针操作。祝大家学习愉快~

不定义第三个变量,如何交换两个变量的值?