对于初学者来说,交换两个变量的值是一个很经典的算法。它实现起来很简单。
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语言还可以用指针操作。祝大家学习愉快~