三种方法交换变量值
来源:互联网 发布:ubuntu qemu kvm 编辑:程序博客网 时间:2024/05/21 19:19
有两个整形变量
int a=2;int b=5;
现要交换a和b的值。
常用的方法:定义一个中间变量,由这个变量暂时保存交换的值。
int temp=a;a=b;b=temp;System.out.println("a="+a);System.out.println("b="+b);
但这种方法引入的第三变量,增大了内存开销,所以还有另外两种不需要中间变量的交换方法。
加减法(算数运算法):
a=a+b;b=a-b;//b=a-b=(a+b)-b=aa=a-b;//a=a-b=(a+b)-b=(a+b)-a=bSystem.out.println("a="+a);System.out.println("b="+b);
通过简单的加减运算便交换了两个变量的值。
异或法:
a=a^b; b=a^b; a=a^b; /** * a=a^b 0010^0101=0111 * b=a^b 0111^0101=0010 * a=a^b 0111^0010=0101 */ System.out.println("a="+a); System.out.println("b="+b);
通过三次连续的异或便实现了交换
完整代码:
public static void main(String[] args) { int a=2; int b=5; //常用方法:引入中间变量 int temp=a; a=b; b=temp; System.out.println("a="+a); System.out.println("b="+b); System.out.println("-------------"); //加减法 a=a+b; b=a-b;//b=a-b=(a+b)-b=a a=a-b;//a=a-b=(a+b)-b=(a+b)-a=b System.out.println("a="+a); System.out.println("b="+b); System.out.println("-------------"); //异或的方法 a=a^b; b=a^b; a=a^b; /** * a=a^b 0010^0101=0111 * b=a^b 0111^0101=0010 * a=a^b 0111^0010=0101 */ System.out.println("a="+a); System.out.println("b="+b); }
运行输出:
0 0
- 交换变量值的三种方法
- 三种方法交换变量值
- c\c++交换两变量值的三种方法
- 实现两个变量值交换的三种方法
- 交换两个变量值的三种方法
- 3种交换变量值的方法
- 两种交换变量值的方法
- 5种方法巧妙交换变量值
- (基础三)交换两个变量值的三种方法
- 交换变量值的方法
- 不使用第三方变量交换两个变量值的三种方法
- 黑马程序员_C语言三种方法实现两个变量值的交换
- 黑马程序员__三种方法实现两个变量值的交换
- C语言三种方法实现两个变量值的交换
- 交换两个变量值的三种方法(Java实现)
- 三种方法实现不引入变量交换两个变量值
- java基础(四):实现变量值交换的三种方法
- Java 变量值交换的三种实现
- 学习Android中音乐播发器
- 一个好的管理者:场上暴君,场下朋友;工作魔鬼,生活好人
- win7 命令行开启WiFi
- 安装openrave 0.9的各种依赖包
- JAVA实现求GPS两点之间的距离
- 三种方法交换变量值
- 【半年总结】--你若盛开,清风自来
- hash code
- python scipy和scikit-learn包的安装
- 题解——Leetcode 419. Battleships in a Board 难度:Medium
- 【STM32】新手折腾笔记--00:写在前面
- Maven项目不明原因报错
- 杭电 hdu 1045. Fire Net
- form在提交时被取消:因为form没有被连接