Java基础中Int类型变量值互换的几种方法
2018-11-09 02:37:26来源:博客园 阅读 ()
在很多时候,我们会使用到将两个整型变量值进行互换,比如冒泡排序,通过判断来将数组变量的值逐步交换,那么怎么交换值才能最有效最节省空间呢?
首先,我们会想到的,用一个零时变量来做中间的过度存储空间,这是很容易想到的方法,实现如下:
int i = 10; //声明变量 i,并给 i 赋值为10
int j = 20; //声明变量 j,并给 j 赋值为20
int temp; //声明零时变量temp
那么,我们要将变量 i 的值赋给变量 j ,就得通过零时变量temp存储其中一个变量的值:
temp = i ; //将变量 i 值暂存于零时变量temp中,即temp = 10;
i = j ; //将变量 j 的值赋值给变量 i ,即 i = 20;
j = temp ; //将零时变量存放的值赋值给变量 j ,即 j = 10;
这样,我们就完成了最简单的值互换。
其次,既然我们需要互换的是int类型的变量,那么就可以进行数值运算及加减乘除来实现变量值的互换。
int i = 10; //声明变量 i,并给 i 赋值为10
int j = 20; //声明变量 j,并给 j 赋值为20
i = i + j; //将 i + j(10+20) 的和赋值给变量 i ,赋值后变量 i 的值为 30
j = i - j; //将 i - j(30-20) 的差赋值给变量 j ,赋值后变量 j 的值为 10
i = i - j; //再运算一次,将 i - j(30 - 10)的差赋值给变量 i ,赋值后变量 i 的值为 20
这样,我们也完成了两个变量值的互换,这样的好处是不需要第三个变量参与,节省了运行内存。
最后,我们可以通过位运算中的异或运算(^)实现变量值的交换,异或运算是位运算,其规则是相同为0,不同为1,即1^0或0^1的取值为1,1^1或0^0的取值为0,实现如下:
int i = 10; //声明变量 i,并给 i 赋值为10
int j = 20; //声明变量 j,并给 j 赋值为20
//其中变量 i 的值为10,其二进制编码为:0000 1010
//其中变量 j 的值为20,其二进制编码为:0001 0100
i = i ^ j ; //即为 10 ^ 20 ,根据 ^ 的运算规则可知,其结果是 0001 1110 ,转换成十进制为:24 + 23 + 22 + 2 = 30 ,
//并将30赋值给变量 i ,即 i = 30
j = i ^ j ; //即为 30 ^ 20,其结果是 0000 1010,转换成十进制为10,并将结果赋值给变量 j ,即 j = 10
i = i ^ j ; //即为 30 ^ 10,其结果是 0001 0100,转换成十进制为20,并将结果赋值给变量 i ,即 i = 20
这种方式不需要使用零时变量,且是通过位运算,增加了其运算速度。
总结,在完成代码时,我们要在解决问题的同时思考更加高效率的解决方案,当然,我们也要明白不同方案的优点和缺点,虽然有些方案可以提高运行效率,比如上述的第三种方案,但是他没有第一种方案直观,并且效率也没有说完全高太多,只要在可接受的运行时间和空间内解决问题,那么我们完全可以使用第一种更为简单和直观的方式解决问题。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash