如果第一个为真,则逻辑或忽略第二个语句

Sha*_*rot 5 java eclipse logical-or

在Java(Eclipse)中,当有这样的语句时if (true || false),它最终会成立,但问题是如果第一个是真的,编译器会评估第二个语句吗?这对我来说很重要,因为如果变量为null或者它有一定的值,我需要做一个操作.我的陈述看起来像if (array == null || array[i] < array[j]).你可以看到我的问题的原因,因为如果数组设置为null,那么第二个语句将产生错误.那么,真的是array == null足够还是编译器array[i] < array[j])也会评估呢?

Men*_*ena 14

不,不会.

  • 使用布尔运算符||,如果第一个术语是true第二个术语将不会被评估.
  • 使用按位运算符|,将评估两个术语

同样...

  • 使用布尔运算符&&,如果第一个术语是false第二个术语将不会被评估
  • 使用按位运算符&,将评估这两个项

Java运营商在这里提供文档.