话题15 异曲同工--交换变量的3种方式
来源:互联网 发布:研究生课程表软件 编辑:程序博客网 时间:2024/06/01 07:20
下面介绍2个变量交换的3种方式。
1 . 普通方法。
见代码:
/** * */package huati15;/** * @author Vayne * */public class SwapTest {public static void main(String[] args) {int i = 5;int j = 7;swap(i, j);System.out.println(i);System.out.println(j);Value va = new Value(i, j);swap(va);System.out.println(va.i);System.out.println(va.j);}/** * @param va */private static void swap(Value va) {// TODO Auto-generated method stubint temp = va.i;va.i = va.j;va.j = temp;}/** * @param i * @param j */private static void swap(int i, int j) {// TODO Auto-generated method stubint temp = i;i = j;j = temp;}}class Value {int i;int j;public Value(int i, int j) {// TODO Auto-generated constructor stubthis.i = i;this.j = j;}}
运行结果:
5775
形参的改变是不能反作用于实参的。但是可以通过引用来改变成员变量的值。
2 . 相加与相减的方法
有的时候在不能引入第三个变量的前提下去交换2个变量的值,但是会产生溢出问题。可以使用下面的方法:
/** * */package huati15;/** * @author Vayne * */public class SwapTest2 {public static void main(String[] args) {int i = 5;int j = 7;Value value = new Value(i, j);swap2(value);System.out.println(value.i);System.out.println(value.j);}/** * @param i * @param j */private static void swap2(Value value) {// TODO Auto-generated method stubvalue.i = value.i + value.j;value.j = value.i - value.j;value.i = value.i - value.j;}}
运行结果:
75这是利用2个数和的方法,我们同理也可以使用2个数差的方法。不再做介绍。
3 . 位运算实现变量交换
位异或运算符有这样的性质:(x^y^y)=x。因此可以利用这个性质去交换变量,在这个过程中也没有使用第三方变量。
代码如下:
/** * */package huati15;/** * @author Vayne * */public class SwapTest3 {public static void main(String[] args) {Value value1 = new Value(5, 10);swap3(value1);System.out.println(value1.i);System.out.println(value1.j);}/** * @param i * @param j */private static void swap3(Value value) {// TODO Auto-generated method stubvalue.i = value.i ^ value.j;value.j = value.i ^ value.j;value.i = value.i ^ value.j;}}
结果:
105这方法较好。不会产生溢出问题。
0 0
- 话题15 异曲同工--交换变量的3种方式
- 大数据Java-交换变量的3种方式
- 变量交换的三种方式
- 变量交换的三种方式
- 实现变量交换的几种方式
- 交换两个变量的三种方式
- Java变量交换的几种方式
- 两个变量交换的几种方式
- 透析Java本质-交换变量的几种方式
- 两个变量交换位置的几种方式
- JavaScript中交换两个变量的三种方式
- 交换两个整型变量的两种方式
- 引用传递方式交换3个变量的值
- 3种编程方式实现交换变量a.b的值
- 不借助第三个变量,交换两个变量值的3种方式
- 异曲同工的租约
- 两种不用空间开销的变量交换方式及易犯错误(局限性)
- Java交换变量的三种方式、三目运算符、while循环和Dowhile循环
- crontab,linux中创建定时任务与取消
- 命令行快速跳转/编辑神器fasd
- 基于android的Socket通信
- 内连接、左外连接、右外连接、交叉连接区别
- HDU5584 LCM Walk 数学公式
- 话题15 异曲同工--交换变量的3种方式
- Java 中的 final 关键字的一些注意事项小记
- Java BuffereInputStream里的reset和mark方法
- 7. 尚硅谷_佟刚_JavaWEB_ServletContext.wmv
- 生命周期
- 迎宾机器人操作步骤说明
- iOS进阶之runtime(2)--KVO简单模拟实现
- Dynamics crm 中的业务部门,用户,角色,权限之间相互关系(一)
- MyEclipse 8.6编写JAX-WS的WebService-minOccurs等在Java里怎么生成的?