等效布尔语句具有不同的结果

时间:2013-04-12 09:31:24

标签: java

我很担心&&运营商正在运作

if (StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && (cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)))

以上陈述是真实的

,而

if (StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out))

被认为是假的。这两个陈述之间只有大括号。

作为附加输入,我使用调试器和

进行了检查
 StringUtils.isNotEmpty(cartModification.getStatusCode() =true
cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)=true

我刚在第二部分添加了额外的括号,它被评估为真,数据与我指出的相同。

1 个答案:

答案 0 :(得分:0)

由于评论框并不真正适用于此:

如何在一次尝试中尝试这个。

if(StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out))
    System.out.println("First try is true");

if(StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && (cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)))
    System.out.println("Second try is true");

无论如何,你应该得到没有或两行(因为两个陈述是相同的)。

注意可能只打印一行,这意味着getStatusCode()上的任何调用都会调用至少其中一个条件中使用的任何值的更改。