一:逻辑运算符(&&,||)两边是以boolean的形式来得到结果(结果也是boolean类型);
例;true=ture&&true 最后结果为true(&&两边为ture则结果为true.如果两边
都不全为ture则结果为false)
false=true&&false,false=false&&ture,false=false&&false;
而||则与它刚好相反
true=true||false,只要结果中有一个为true,则整体结果为true,
true=false||true,true=true||true,false=false||false;
二:位运算符(&,|)如果左右两边都为boolean类型,则执行方式与(&&,||)``一样; (这里就不再重复了;)
true=ture&true, false=true&false, false=false&ture,
false=false&false;
true=true|false, true=false|true, true=true|true,
false=false|false;
三:逻辑运算符中的取反运算符(!);如果为true则结果为false,如果为false则结果为true
false=!true, true=!false;
四:逻辑运算符与位运算符的区别与注意
位运算符还有一个作用:就是当运算符两边不是boolean类型时,而是数字则结果要进行二进制转换(这个涉及到计算机的二进制问题)
4.1: a&b (都为1时则为1)
1&4 = 0,
4.2: a|b (只要有一个为1则为1)
1|2 = 3;
4.3: a^b (两边相同为0,不相同为1)
1^3 = 2;
4.4: ~a (为0时则为1,为1时则为0)
~2 = -3;
五:注意:逻辑运算符会出现"短路"现象(可以通过换成位运算符来解决这个问题)
public class LuoJiDemo02 {
public static void main(String[] args) {
//&&与&,当&&左边为false,则结果为false,右边不进行运算
int a=3,b=4;
//&&与&的短路
//System.out.println((a>b)&((a+=b)>b))//(3>4)&(7>4);左右两边都会执行
//System.out.println(a);对应上面结果为7
//System.out.println(b);对应上面结果为4
System.out.println((a>b)&&((a+=b)>b))/*(3>4)&((a+=b)>b)
左边的结果为false,则后面的部分不运行了*/
System.out.println(a);//a的结果还是3
System.out.println(b);//b的结果还是4
//||与|的短路
//System.out.println((b>a)|((a+=b)>b))/*(4>3)|(7>4)左右两边都会执行*/
//System.out.println(a);对应上面结果为7
//System.out.println(b);对应上面结果为4
System.out.println((b>a)||((a+=b)>b))/*(4>3)|((a+=b)>b)),左边结果为
true,则右边结果不运行*/
System.out.println(a);//a的结果还是3
System.out.println(b);//b的结果还是4
}
}