问个大家简单的问题:
boolean bConn=false;
……………………
if(bConn==false)
……
和if(false == bConn)
……
有神马区别啊
boolean bConn=false;
……………………
if(bConn==false)
……
和if(false == bConn)
……
有神马区别啊
解决方案 »
- 面向对象真有意思,请教一个问题,谢谢
- 修改表约束的小问题
- 对xml进行解析编码问题
- jbuilder2007 运行程序时显示the selection did not contain anything that can be run on a server
- 一个关于配置文件的问题,请各位高手指教!谢谢!20分
- 急,struts中怎样利用iterate标记和bean标记的来显示存在session中一个bean的集合中的数据!
- 随机函数怎么写 指怎么写出random()而不是用 写点就有分!
- 大家看这么简单的句子错在那了?
- 写了一个关于数据库操作的程序,出现了我不能够解决的问题大家看看??
- java 一个数等于几个数平方和
- 请教:java反射机制无法找到android中的类
- java udp穿透NAT,怎么实现?
直接if(bConn)也可以
你说的那两种应该没有区别
if(bconn==false)易出現粗心寫成 if(bconn=false)而不報錯
但是
if(false==bconn)錯寫成if(false=bconn)會報錯
if(null == str || "".equals(str)) return ""; //性能好,效率高,运行速度快
if(str == null || str.equals("")) return ""; //效率低,运行速度慢上面的写法我保证测试过。由于水平有限,上面两种写法暂只发现在性能方面存在很大区别。多多指教
一般就if(null!=str),将null写在前,如果是true,false,一般用if(!str)
涉及NULL的比较确实区别,因为NULL和任何引用都不相等,包括NULL和NULL比较,但这算是特例吧,不具有一般性,再有,我不觉得""(空串)的比较也会因为写法的不同在效率上有区别,不知道你有没有单独测试一下空串的情况,另外,逻辑与或操作用带短路的运算符 | ,&效率会高点。
boolean temp;
if(null == temp)这是肯定调用的是null对象的方法,反之是调用的temp对象的方法,至于基本数据类型,这两种写法应该都无所谓的。例如String 或者 其他包装类 自定义类, 我没有做过测试
……………………
if(bConn==false)
LZ这个问题问的比较细致和经典,如果要从最后的效果来看的话,结果都是一个:条件符合进入if内部执行内部的方法,但是他们之间的区别得追踪到,他们执行的流程上,
先定义:boolean bConn=false;
看"=="作用
1.数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
2.果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等.
3.表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
4.针对所有的原始数据类型执行自动数据转换。
5.在对 null 和 undefined 进行比较时,全等运算符返回 false。
6.在涉及到原始值(例如,var x:Number = 1)和原始对象(例如,var x:Number = new Number(1))这两种情况下,全等运算符在 ActionScript 3.0 中生成的结果与在 ActionScript 2.0 中生成的结果不同。这是由于 ActionScript 3.0 不再区分原始值和原始包装对象。
总结出:结果是一样,但是有个先后顺序,是拿右边的原始值和左边的值进行比较,按java常规==写法都是把固定的写左边,会变动的写右边,和equals恰恰相反,这样也就多多少少的影响到了部分运行性能问题。
个人愚见,只供参考。
另外你想获得最好的运行效率的话建议用这种方式判断空字符串
if(str == null || str.length() == 0) return "";
测试的方法就是做一些耗时的操作来抹掉一些时间!
具体可以看一下我刚刚写的bolg
http://blog.csdn.net/pdw_jsp/article/details/6700449
不知道你所谓的很大差异是多大? String str = null ;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
System.out.println(sdf.format(System.currentTimeMillis()));
if(null == str || "".equals(str)) {}
System.out.println(sdf.format(System.currentTimeMillis()));
if(str == null || str.equals("")){}
System.out.println(sdf.format(System.currentTimeMillis()));我运行的结果是:
15:00:56.531
15:00:56.531
15:00:56.531
if(bConn==false){}
你这个变量是布尔类型,所以看不出差别来,如果在是String类型,那么在传递过程中,没有取到bConn的值,会报空指针异常。
在实际项目中if(bConn==false)和if(false == bConn)估计都会被领导骂,
而if(!bConn)则不会。
譬如if(var == null) 如果var只声明了对象类型,而没有new,这种情况就很容易报空值针错误。
应写成if(null == var)