首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java混淆行为

Java混淆行为
EN

Stack Overflow用户
提问于 2013-09-24 05:39:55
回答 5查看 151关注 0票数 1

我是白盒测试的一些例外,我遇到一些令人困惑的行为,张贴样例测试代码和输出!

代码语言:javascript
复制
// 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?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-24 05:43:38

代码语言:javascript
复制
System.out.println(" Garbage Testing : "+ a == null );

它打印错误,原因是-它实际上比较"Garbage Testing : null"==null,结果是false,因为+具有更高的优先级。

适当的分组可以解决这个问题-

代码语言:javascript
复制
System.out.println(" Garbage Testing : "+ (a == null) );

打印-垃圾测试:真

代码语言:javascript
复制
System.out.println(" Garbage Testing : "+ (a != null) );

打印-垃圾测试:假

票数 8
EN

Stack Overflow用户

发布于 2013-09-24 05:42:20

使用括号进行正确的行为:

代码语言:javascript
复制
System.out.println(" Garbage Testing : " + (a == null) );
//=>  Garbage Testing : true

因为+ ==**,比 operators precedence 高,所以表达式被计算为:**

代码语言:javascript
复制
System.out.println( (" Garbage Testing : " + a) == null );

,这是假的

PS:还注意到,在您的声明中,甚至没有打印Garbage Testing :

票数 5
EN

Stack Overflow用户

发布于 2013-09-24 05:44:01

'+‘运算符优先于'==’。实际上,您正在比较字符串“垃圾测试: null”和null。为了达到预期的结果,您需要在“== null”周围加上括号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18973740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档