这是一个CSDN上大家有所争议的问题,在这里给出个人的见解和测试。如果觉得有什么不对的地方或者你有什么更好的想法欢迎拍砖!废话不多说看一下几种情况!
1: IDE的识别问题 :虽然作为程序员的我们基本上都有一套自己的比较正确的写法,但是作为新人也许会问你这些问题,如果知道了这个的话就不必那么的感到惊讶!
(为了大家能看到报错的信息这里是截图;还望理解)
2 : 测试两种写法的效率问题
package CSDN;
/**
* boolean 效率问题!!!
*
* @author qiuqiu 注: CSDN所看到的一个问题虽然我们也许都不这么写但是如果如果被问到你知道的话也不会那么觉得不可思议
*
*/
public class BooleanTest {
public static void main(String[] args) {
testEff_priVer(false);
testEff_endVer(false);
}
public static void testEff_priVer(boolean bConn) {
long pri_time = System.currentTimeMillis();
System.out.println("pri_time = " + pri_time);
if (bConn == false) {
int count = 0;
for (int i = 0; i < 100000000; i++) {
count++;
}
}
System.out
.println(("last_time = " + (System.currentTimeMillis() - pri_time)));
}
public static void testEff_endVer(boolean bConn) {
long pri_time = System.currentTimeMillis();
System.out.println("pri_time = " + pri_time);
if (false == bConn) {
int count = 0;
for (int i = 0; i < 100000000; i++) {
count++;
}
}
System.out
.println(("last_time = " + (System.currentTimeMillis() - pri_time)));
}
}
结果1: (后面效率更高)
pri_time = 1313719099953
ver is pri : last_time = 78
pri_time = 1313719100031
ver is end :last_time = 62
结果2:(效率相同)
pri_time = 1313719144937
ver is pri : last_time = 78
pri_time = 1313719145015
ver is end :last_time = 78
结果3 :(前面效率更高)
pri_time = 1313719201718
ver is pri : last_time = 63
pri_time = 1313719201781
ver is end :last_time = 78
如果你多测试几次可能就会出现结果3了,所以在此给出一个结论: 其实这两种的效率是一样的。(只是在处理的时候CPU占用的时间导致了不同结果)
3:其实还有就是测试true 与 false 与变量比较的情况!以及 if(bconn = =true) ,与if(bconn)
结果如2所得出的结论,效率其实是一样的,只是作为程序员的我们有了if(bconn) 就没有任何的必要去写if(bconn = =true) 这也许就是程序员的不成文规范罢!
以上结论纯属个人测试所得。如果有什么异议欢迎拍砖!