0

我对 && 运算符的工作方式感到困惑

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

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

4

1 回答 1

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()调用至少一个条件中使用的任何值的更改。

于 2013-04-12T09:51:51.570 回答