在java中遵循true:
在java中,如果使用||
,那么在获得第一个真实条件后,它会忽略其余条件。那就是如果你在java中编写if(a || b || c)
并且java发现a
为真,那么它将不会检查b
和c
,只是进入if情况。
答案 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)
如果a
为false
,则条件不可能为真,则不会检查b
或c
。
如果您调用返回布尔值的方法,则可能会出现问题。要解决此问题,您可以使用按位&
和|
。
答案 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
&&