Java条件运算符与示例
Java &&中有两个条件运算符(称为"条件与")和||。 (称为"条件或者")。 Java中的条件与(&&)和条件或者(||)运算符都对两个布尔表达式执行运算,并返回布尔值。
条件与-如果Java中的&&运算符是两个布尔表达式中的任何一个为false,则结果为false。以下表达式给出了条件AND运算符如何在Java中工作的想法。
真实&&真=真
真&&假=假
假&&真=假
假&&假=假
条件或者–如果|| Java中的运算符,如果两个布尔表达式中的任何一个为true,则结果为true。以下表达式给出了一个条件OR运算符如何在Java中工作的想法。
真实||真=真
真实||假=真
假||真=真
假||假=假
条件运算符的Java示例
public class ConditionalDemo { public static void main(String[] args) { int x = 3; int y = 4; int z = 5; //evaluates to false if((x > z) && (y > z)){ System.out.println("x and y are greater than z"); } //evaluates to true if((x < z) && (y < z)){ System.out.println("x and y are less than z"); } // One is true so evaluates to true if((x < z) || (y > z)) System.out.println("Either x is less than z or y is greater than z"); } }
输出:
x and y are less than z Either x is less than z or y is greater than z
条件运算符的短路行为
Java中的条件运算符表现出短路行为,这意味着仅在需要时才对表达式中的第二个操作数求值。
对于&&运算符,如果两个布尔表达式中的任何一个为false,则结果为false。这意味着,如果第一个表达式的计算结果为假,那么甚至不需要评估第二个表达式,因为结果无论如何都是假的。
如果||运算符,如果两个布尔表达式中的任何一个为true,则结果为true。这意味着,如果第一个表达式的计算结果为true,那么甚至不需要评估第二个表达式,因为结果无论如何都是正确的。
Java示例表现出短路行为
public class ConditionalDemo { public static void main(String[] args) { //evaluates to false if(evaluateMethod(4, 5) && evaluateMethod(5, 4)){ System.out.println("evaluates to true"); }else{ System.out.println("evaluates to false"); } } static boolean evaluateMethod(int num1, int num2){ System.out.println("In evaluateMethod" ); return num1 > num2; } }
输出:
In evaluateMethod evaluates to false
如我们所见,第一个表达式本身的计算结果为false,这就是为什么在条件AND的第二个表达式中甚至没有调用method的原因。
public class ConditionalDemo { public static void main(String[] args) { //evaluates to false if(evaluateMethod(7, 6) && evaluateMethod(5, 4)){ System.out.println("evaluates to true"); }else{ System.out.println("evaluates to false"); } } static boolean evaluateMethod(int num1, int num2){ System.out.println("In evaluateMethod"); return num1 > num2; } }
输出:
In evaluateMethod In evaluateMethod evaluates to true
现在第一个表达式的计算结果为true,因此第二个表达式的计算结果也是如此,这就是为什么现在两次都调用method的原因。
为了检查条件OR中的短路行为,我们可以将表达式更改为||。在上面的代码中。
public class ConditionalDemo { public static void main(String[] args) { //evaluates to false if(evaluateMethod(7, 6) || evaluateMethod(5, 4)){ System.out.println("evaluates to true"); }else{ System.out.println("evaluates to false"); } } static boolean evaluateMethod(int num1, int num2){ System.out.println("In evaluateMethod"); return num1 > num2; } }
输出:
In evaluateMethod evaluates to true
在if条件下,第一个表达式的计算结果为true,因为它是一个有条件的-或者因此无需评估第二个表达式,因为结果无论如何都是真实的。这就是为什么不调用第二个表达式中的validateMethod()的原因。