【Java】逻辑运算符的相关理解和运算

    xiaoxiao2022-07-14  185

    逻辑运算符

    逻辑运算符只对布尔型操作数进行运算,并返回一个布尔类型数据(真true或假false)。

    运算符

    含义

    解释

    &&

    与(AND)

    两个操作数皆为真,结果才为真

    &

    ||

    或(OR)

    两个数只要有一个为真,运算结果才为真

    |

    非(NOT)

    返回与操作数相反的布尔值

     

    举个例子:

    1>0&&3>0;//结果为true 1>0||3>8;//结果为true !(1>0);//结果为false

     短路逻辑运算符的使用

    public class Short { public static void main(String[] args) { int i = 5; boolean flag = (i<3)&&(i<4);//&&短路,i<4系统不做运算 System.out.println(flag); flag = (i>4)||(i>3);//||短路,i>3系统不做运算 System.out.println(flag); } }

    程序运行结果:

    程序中,第3行,由于i=5,所以(i<3)为false,对于&&逻辑运算符,其操作数之一为false,其返回值必然为false,故再确定其左边的操作数为false,对于后一个运算操作数(i<4)无需计算,也就是&&短路。

    类似的,对于“||”运算符,由于i=5,所以(i>4)为true,对于||逻辑运算符,其操作数之一为true,整体返回值必然为true,故再确定其左边的操作数为true,对于后一个运算操作数(i>3)无需计算,也就是“||”短路。

    位运算符:

    位运算符含义&按位与|按位或^按位异或~按位取反<<左位移>>右位移>>>无符号右位移

     

    截张图来理解

     

     

    按位与和按位或运算:

    public class 按位与和或 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("x="); int x = s.nextInt(); System.out.println("y="); int y = s.nextInt(); System.out.println("x与y的结果为:"); System.out.println(x&y); System.out.println("x或y的结果为:"); System.out.println(x|y); } }

     

    输出结果为:

    代码解析:

    第10行,实现与操作,相“与”的两位,如果全部为1结果才是1,有一个为0结果就是0。

    13的二进制: 0000000 0000000 0000000 0000110

    17的二进制:  00000000 00000000 00000000 00000111 “与”的结果:  00000000 00000000 00000000 00000101

    所以输出的结果为5。 第12行,实现或操作,位“或”的两位,如果全为0才是0,有一个为1结果就是1。

    13的二进制:  00000000 00000000 00000000 00001101 7的二进制:  00000000 00000000 00000000 00000111

    “或”的结果:  00000000 0000000 0000000 00001111所以输出的结果为15。

     

    最新回复(0)