A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Xiiian 中级黑马   /  2015-11-26 22:34  /  1727 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
Java基础,两个变量的数值互换。
这里只考虑Java语言,因为不同语言的机制不同,Java可以执行的,C未必可以,而C可以的,Java也未必能行,
毕竟每种语言都有自己独特的魅力~。◕‿◕。
*/

/*
1:最简单,最好理解的方法:引入第三个内存,即设置第三个变量。
假如有一瓶可口可乐和一瓶雪碧,现在想用可口的瓶子装雪碧,用雪碧的瓶子装可口(不要问我为什么要换瓶子,就是任性╮(╯3╰)╭),
这个方法就是再找个空瓶。
*/
temp = a;
a = b;
b = temp;

/*
2:这里是位运算,在计算机底层操作。
位异或特点:左右两边是数据,相同为0,不同为1。某一个数对另一个数异或两次得到的结果是其本身。
*/
a = a^b;      //将a^b赋值给=>a,此时a的值是a^b;
b = a^b;      //(a^b)^b => b,这时b就变成a原来的值了;
a = a^b;      //(a^b)^((a^b)^b) => a,将a变成b。



/*
2.1:注意!不要轻易尝试压缩代码,要是写成下面这种就错啦!a会变成0……
*/
a^=b^=a^=b;


/*
2.2:但是写成下面这种就可以,原因嘛,我也不知道_(:3 」∠)_
*/
a^=b^=a;
b^=a;


/*
3:不用第三个变量,而引入第三个数据的方法,就是加减乘除法。但是要注意!变量数值较大时可能会溢出。
*/
a = a+b;      //a+b => a
b = a-b;      //(a+b)-b => b
a = a-b;      //(a+b)-((a+b)-b) => a

/*
3.1:
*/
a = a-b;
b = a+b;
a = b-a;

/*
3.2:用这种方法时又多了一个限制:b不能为0。
*/
a = a*b;
b = a/b;
a = a/b;

/*
4:加减乘除赋值混合法~简直像和稀泥ಥ_ಥ
*/
a = b + (b = a)*0;

/*
这是充分利用运算符的优先级别和顺序做出来的,首先要了解两件事。
赋值运算符的优先级别是很低的,并且运算顺序是从右至左。
也就是说b = a + ( a = b ) * 0会先算右边的a + ( a = b ) * 0。
加法运算符的优先级别比赋值运算高,并且运算顺序是从左至右。
所以a + ( a = b ) * 0会先计算左边的a,然后再计算( a = b ) * 0,就是这个顺序使得a的值可以暂存。
剩下的事情就是把a=b这个表达式的值给消掉了,方法也很简单。
*/

/*
4.1:
*/
a = a + b - (b = a);

/*
5:加减乘除还能组合出很多好玩的方法~
*/
a = a-b;            //a-b=>a
b = a+2*b;       //(a-b)+(b+b)=a+b=>b
b = (a+b)/2;    //((a-b)+((a-b)+(b+b)))/2=a=>b
a = b-a;           //a-(a-b)=b=>a


/*
除了三变量方法外,其他方法要么在计算机底层操作,要么进行算数运算,除了在新手面前装X外还有其他作用嘛? (╯‵□′)╯︵┻━┻
一:运行速度慢;
二:一定程度上影响了代码的直观;
三:加减,乘除及其他花样的交换有溢出问题。
所以三变量交换法远比这些花样作死的运行快,而且清晰直观。
在现代的计算机编程中,内存的使用量都是极大的,多一个变量内存完全可以忽略,倒是时间的考量越发严格,
假如在一个需要进行大量交换操作,同时又需要保证稳定性的程序中,三变量法却是最好的选择。

没想到最后,看起来最朴实的却是最优秀的~
所以作为朴实的敲代码的程序猿(媛)们是最棒哒~ (╭ ̄3 ̄)╭♡
*/

评分

参与人数 1黑马币 +2 收起 理由
橘子果酱 + 2 赞一个!

查看全部评分

9 个回复

正序浏览

很好赞一个
回复 使用道具 举报
DaYe 中级黑马 2015-11-27 23:38:50
9#
很好赞一个
回复 使用道具 举报
值得学习,要自己总结知识啊
回复 使用道具 举报
总结的很好  有自己的理解
回复 使用道具 举报
我是总结那么好
回复 使用道具 举报
666                             
回复 使用道具 举报
跟ios好多也一样,学习了
回复 使用道具 举报
虽然这是个小问题,但是你总结的很详细,很值得学习啊
回复 使用道具 举报
总结很好,慢慢形成自己的体系。你可以收获很多
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马