在java中是真的吗?

时间:2012-01-05 05:05:30

标签: java if-statement

在java中遵循true:

在java中,如果使用||,那么在获得第一个真实条件后,它会忽略其余条件。那就是如果你在java中编写if(a || b || c)并且java发现a为真,那么它将不会检查bc,只是进入if情况。

8 个答案:

答案 0 :(得分:3)

是的,这被称为短路,如果您在左侧放置较便宜的支票,您可以避免使用昂贵的支票。

适用于||&&

最好的用途之一是检查可能为null的对象的值:

if(myList != null && myList.size() > 6)

前一行是null安全的,如果myList为null,则反转条件将导致空指针异常

答案 1 :(得分:2)

这是对的。 ||称为短路OR评估,或 OR-ELSE 运算符。

在评估右侧可能导致不良后果的情况下,这很重要:

 if (myString == null || myString.indexOf("hello") != -1)
      ...
如果不是为了短路,

会崩溃。

答案 2 :(得分:1)

,这样编译器可以避免不必要的检查和计算开销。

答案 3 :(得分:1)

这是正确的,这不仅仅是语言实现的一部分懒惰,而是一个关键特性 - 短路允许你写这样的东西:

if (myarray.length > 10 && myarray[10] == 5) { /* ... */ }

如果第一个条件为真,那么第二个条件甚至可以评估。由于短路,如果第一个条件为假,则第二个条件永远不会被触及。

答案 4 :(得分:0)

(AFAIK) 同样的事情适用于&&但反过来。(首先是假的)。


与AND和OR门的电路相同的规则。

答案 5 :(得分:0)

是的,它被称为short-circuiting。它也会短路&&,即

 if (a && b && c)

如果afalse,则条件不可能为真,则不会检查bc

如果您调用返回布尔值的方法,则可能会出现问题。要解决此问题,您可以使用按位&|

答案 6 :(得分:0)

是的,这是对的。如果你使用|此运算符检查OR条件然后检查其余所有条件。它也适用于AND(&)运算符。

答案 7 :(得分:0)

是的,还有一个重要的事情,如果你在第二部分做任何操作,它们就不会被制作出来。例如:

int a = 5;
int b = 5;
if ( a == b  || a++ == b){
    ...
}
//a = 5
//b = 5

但以防:

int a = 3;
int b = 5;
if ( a == b  || a++ == b){
    ...
}
//a = 4
//b = 5

我试图做一个简单的例子,但有时你会在第二部分中调用一个方法(如果true的话,第一部分是||则不会被调用),或者第一部分在false

的情况下,部分为&&