回顾旧代码的更改,我看到了一个非常有趣的更改。有区别:

if(retValue.equals("") || retValue == null){

if(retValue == null || retValue.equals("")){


有什么建议么?与jvm有什么区别?

谢谢。

最佳答案

||&&运算符是“惰性的”:JVM将在确定结果后立即停止对表达式的求值。


对于||,一旦其中一个操作数为true ==>整个表达式为true,它将立即停止。
对于&&,一旦其中一个操作数为false ==>,则整个表达式为false,它将立即停止。


引用JLS #15.24(强调我的):


  条件或运算符||运算符与|(第15.22.2节)类似,但是仅当其左侧操作数的值为false时才评估其右侧操作数。

10-02 23:57