转载微信号:程序人生 2018.9.3-这几个编程小技巧,让你代码效率提升一个档次
大概看了一下这篇文章,没有深究,只能看懂一部分。写在这里以求加深印象。
1.for循环变量初始化
for(int i=0;i<s.length;i++){
System.out.println(i);
}
上边代码,每次循环都将执行函数length判断一次s的长度,浪费时间。将s.length作为变量定义在循环外,省去判断时间。如下:
int len=s.length;
for(int i=0;i<s.length;i++){
System.out.println(i);
}
感想:循环中的部分,尤其是一些判断函数,且固定结果的,都拿到循环外边去。不影响的情况下减少循环体内容。
2.基本运算和函数。
2.1.在(正负都可以)乘以2(或者2的整数次幂)或者除以2(或者2的整数次幂)的时候尽量用位运算代替。直接操作2进制,最快的运算。
int a=10;
System.out.print(a<<2); //打印结果40;符号左移,低位补0
System.out.print(a>>2); //打印结果2;符号右移,低位消失,高位补0
2.2尽量将除法运算转换成乘法运算。比如条件判断时if(a==b/c)替换为if(a*c==b)。除法运算是乘法运算时间的2倍。
2.3.多使用复合运算符+=、-=、*=、/=。以加一为例,效率高低顺序是(i++,i+=1,i=i+1)。
2.4多掌握一些小函数,比如swap、max、min、sort、qsort等。
3.if条件判断
例子:一个班的成绩如下:74,76,81,94,97,68,77,65,54,89.......总共50个数据,要求用程序将分数分为优秀(》=80)、
良好(》=70)、及格(》=60)、不及格(》=0)四个分数段。
for 所有学生分数
if 分数<60,不及格
else if分数<70及格
else if分数<80良好
else 优秀
分析:这个班的大多数成绩为良好和优秀,而这个程序需要三次才能将成绩归为良好,四次优秀,所以绝大多数的成绩,前两个判断没有必要,调整一下判断顺序即可:
for 所有学生分数
if 分数>=80,优秀
else if分数>=70良好
else if分数>=60及格
else 不及格