1、一般逻辑运算需要在逻辑运算符两侧的逻辑表达式,都参与逻辑运算,其表达式的值进行比较,依次计算出最后的值。
2、短路逻辑运算符需要首先计算最左边的表达式,如果最左边的表达式成立,则不再进行整个表达式的判断,直接取最左边的表达式为整个表达式的值。
下面的例子虽然输出的值一样,但是运算的方式不一样:
private void testAnd(boolean on ,boolean
tw){
System.out.println("true&&false = "+
(true&&false))
System.out.println("false&&false = "+
(false&&false))
System.out.println("false&&true = "+
(false&&true))
System.out.println("true&&true = "+
(true&&true))
System.out.println(" ")
System.out.println("true&false = "+ (true&false))
System.out.println("false&false = "+
(false&false))
System.out.println("false&true = "+ (false&true))
System.out.println("true&true = "+ (true&true))
System.out.println(" ")
System.out.println("true||false = "+ (true||false))
System.out.println("false||false = "+
(false||false))
System.out.println("false||true = "+ (false||true))
System.out.println("true||true = "+
(true||true))
System.out.println(" ")
System.out.println("true|false = "+ (true|false))
System.out.println("false|false = "+
(false|false))
System.out.println("false|true = "+ (false|true))
System.out.println("true|true = "+
(true|true))
}
输出结果为:
短路或“&&”只有在左边的表达式值为true时,才会考虑右边表达式的值,否则直接取左边的值为整个表达式的值;
true&&false = false
false&&false = false
false&&true = false
true&&true =
true
//全部计算表达式两面的值,然后取值运算;
true&false = false
false&false = false
false&true = false
true&true =
true
短路或“||”只有在左边的表达式值为false时,才会考虑右边表达式的值,否则直接取左边的值为整个表达式的值;
true||false =
true
false||false = false
false||true = true
true||true = true
普通或"|"全部计算表达式两面的值,然后得出结果
true|false = true
false|false = false
false|true = true
true|true = true
适用短路运算的条件
1)、表达式前后的逻辑条件有明显的顺序关联关系,顺序条件早的在表达式的左边;
2)、逻辑运算符比较少,不会有嵌套或者短路与非短路逻辑混合的情况;
3)、使用短路运算,必须清楚的明白所要判断的逻辑值的具体细节;
4)、如果"&&"和"||"混用,则不考虑使用短路运算;
JAVA中&&意思是“条件与”逻辑操作符,使用方法是x&&y,功能描述:x和y均为true,取值是true,否则取值是false。
JAVA中||意思是“条件或”逻辑操作符,使用方法是x||y,功能描述:x和y有一个为true,取值是true,否则取值是false。
扩展资料:
JAVA语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须从最左边一个计算部分开始,按照逻辑运算的规则计算该部分的值。每计算完一个部分就与该部分右边紧靠着的逻辑运算符根据真值表进行逻辑值判断。
在逻辑表达式的求解过程中,任何时候只要逻辑表达式的值已经可以确定,则求解过程不再进行,求解结束。
参考资料来源:
百度百科——&&
百度百科——||