关于
JAVA
中交换变量的方法
在我们写程序的时候,经常会遇到两个变量A与B交换的操作,通常大家会借
助第三个变量来实现:
第一种方法利用第三个变量:
如:
C=A;A=B;B=C;
第二种方法是利用加减法实现两个变量的交换:
如:
A=A+B;B=A-B;A=A-B;
第三种方法是得用位异或运算来实现,
也是效率最高的一种,
在大量数据
交换的时候,效率明显优于前两种方法,
如:
A=A^B;B=A^B;A=A^B;
原理:利用一个数异或本身等于0和异或运算符合交换率。
下面看看执行效率
Java
代码
package com.ramon.test;
public class Test {
public static void main(String args[]) {
int A = 2;
int B = 3;
int C;
System.out.println("Object creating…");
System.out.println("A=" + A);
System.out.println("B=" + B);
System.out.println("==================");
System.out.println("Method 1 starting…");
Long
begin
=System.nanoTime();
C = A;
A = B;
B = C;
System.out.println("A=" + A);
System.out.println("B=" + B);
Long
end
=System.nanoTime();
System.out.println("Start Time: "+begin);
System.out.println("End Time: "+end);
自考Java语言快速入门Java 语言基础Java 语言概述 System.out.println("Last Time: "+(end-begin));
System.out.println("==================");
System.out.println("Method 2 starting…");
begin=System.nanoTime();
A = A + B;
B = A
–
B;
A = A
–
B;
System.out.println("A=" + A);
System.out.println("B=" + B);
end=System.nanoTime();
System.out.println("Start Time: "+begin);
System.out.println("End Time: "+end);
System.out.println("Last Time: "+(end-begin));
System.out.println("==================");
System.out.println("Method 3 starting…");
begin=System.nanoTime();
A = A ^ B;
B = A ^ B;
A = A ^ B;
System.out.println("A=" + A);
System.out.println("B=" + B);
end=System.nanoTime();
System.out.println("Start Time: "+begin);
System.out.println("End Time: "+end);
System.out.println("Last Time: "+(end-begin));
System.out.println("==================");
}
}
运行结果:
Object creating…
A=2
B=3
==================
Method 1 starting…
A=3
B=2
Start Time: 7022865296008
End Time: 7022865590179
Last Time: 294171
==================
Method 2 starting…
A=2
B=3
Start Time: 7022866909621
End Time: 7022867035335
Last Time: 125714
==================
Method 3 starting…
A=3
B=2
Start Time: 7022867374764
End Time: 7022867490700
Last Time: 115936
|