我是白盒测试的一些例外,我遇到一些令人困惑的行为,张贴样例测试代码和输出!
// Use Case #01
String a = null;
System.out.println(" Use Case #01");
System.out.println(" Garbage Testing : "+ a == null );
//Use Case #02
a = null;
System.out.println(" Use Case #02");
System.out.println(" Garbage Testing : " + a != null );输出
用例#01 错误 用例02 真的
为什么==为null,尽管a= null?
发布于 2013-09-24 05:43:38
System.out.println(" Garbage Testing : "+ a == null );它打印错误,原因是-它实际上比较"Garbage Testing : null"==null,结果是false,因为+具有更高的优先级。
适当的分组可以解决这个问题-
System.out.println(" Garbage Testing : "+ (a == null) );打印-垃圾测试:真
System.out.println(" Garbage Testing : "+ (a != null) );打印-垃圾测试:假
发布于 2013-09-24 05:42:20
使用括号进行正确的行为:
System.out.println(" Garbage Testing : " + (a == null) );
//=> Garbage Testing : true因为+ ==**,比 operators precedence 高,所以表达式被计算为:**
System.out.println( (" Garbage Testing : " + a) == null );,这是假的
PS:还注意到,在您的声明中,甚至没有打印Garbage Testing :。
发布于 2013-09-24 05:44:01
'+‘运算符优先于'==’。实际上,您正在比较字符串“垃圾测试: null”和null。为了达到预期的结果,您需要在“== null”周围加上括号。
https://stackoverflow.com/questions/18973740
复制相似问题