通常来讲,Java中乘除运算为
int result = 0;
int i = 1;
int k = 5;
result = i * k;
像"*“或者”/"运算在数目小的时候运算效率也不低,但是以百万次作为单位运算时效率就会变得低了,那么就来思考,如何提升效率?
这就用到了位运算<<和 >>,前者表示乘以2的n次幂,后者表示除以2的n次幂,下面以<<为例
int j = 5;
long startTime = System.currentTimeMillis();//程序开始运行时间
for(int i = 0;i < 20000000;i++) {
j = j * 4;
}
long endTime = System.currentTimeMillis();//程序结束运行时间
System.out.println("*运行时间为:"+(endTime-startTime));
long startTimeT = System.currentTimeMillis();
for(int i = 0;i < 20000000;i++) {
j = j << 2;
}
long endTimeT = System.currentTimeMillis();
System.out.println("<<运行时间为:"+(endTimeT-startTimeT));
输出结果为
不过由于java的jdk版本更新原因,关于*/运算符做了相关优化,导致可能两者差别不大,但是运算符在本质上是要更快一些的,只能说具体情况具体分析吧。时代在发展,没有什么是一成不变的,具体发生了哪些变化,还是要自己多探索。