Java 逻辑运算

逻辑运算

基本语法

逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。

运算符说明:

           & 和 &&:表示"且"关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。

           | 和 || :表示"或"关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false

           ! :表示"非"关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。

           ^ :当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。

 理解:异或,追求的是“异”!逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3 < x < 6,应该写成x > 3 & x < 6 。

区分“&”和“&&”:

           相同点:如果符号左边是true,则二者都执行符号右边的操作

           不同点:& : 如果符号左边是false,则继续执行符号右边的操作

              && :如果符号左边是false,则不再继续执行符号右边的操作

            建议:开发中,推荐使用 &&

区分“|”和“||”:

    相同点:如果符号左边是false,则二者都执行符号右边的操作

    不同点:| : 如果符号左边是true,则继续执行符号右边的操作

                 || :如果符号左边是true,则不再继续执行符号右边的操作

     建议:开发中,推荐使用 ||

示例

        int a = 3;
        int b = 4;
        int c = 5;
        //&;有 false 返回 false
        System.out.println((a > b) & (a > c)); // flase
        System.out.println((a > b) & (a < c)); // flase
        System.out.println((a < b) & (a > c)); // flase
        System.out.println((a < b) & (a < c)); // true
        //! 有 true 返回 true
        System.out.println((a > b) | (a > c)); //false
        System.out.println((a > b) | (a < c)); //true
        System.out.println((a < b) | (a > c)); //true
        System.out.println((a < b) | (a < c)); //true
        //^ 相同 flase .不同 true
        System.out.println((a > b) ^ (a > c)); //fasle
        System.out.println((a > b) ^ (a < c)); //true
        System.out.println((a < b) ^ (a > c)); //true
        System.out.println((a < b) ^ (a < c)); //fasle

        //! 非,取反
        System.out.println(!false); // true
        System.out.println(!true); //flase
        //& 和 &&
        System.out.println((a > b) & (a++ > c)); //fasle
        System.out.println("a = " + a); // 
        System.out.println((a > b) && (a++ > c)); //fasle
        System.out.println("a = " + a); // 
        System.out.println((a == b) && (a++ > c));  //false
        System.out.println("a = " + a); // 
        //| 和 ||
        System.out.println((a > b) | (a++ > c)); //true
        System.out.println("a = " + a); // 
        System.out.println((a > b) || (a++ > c)); //true
        System.out.println("a = " + a); // 
        System.out.println((a == b) || (a++ > c)); // true
        System.out.println("a = " + a); //  

 综合练习

1. 定义类 CompareLogicExer
2. 定义 main方法
3. 定义一个int类型变量a,变量b,都赋值为20
4. 定义boolean类型变量bo1 , 判断++a 是否被3整除,并且a++ 是否被7整除,将结果赋值给bo1
5. 输出a的值,bo1的值
6. 定义boolean类型变量bo2 , 判断b++ 是否被3整除,并且++b 是否被7整除,将结果赋值给bo2
7. 输出b的值,bo2的值

int a = 20;
        int b = 20;
        boolean bol = ((++a % 3) == 0) && (((a++ & 7) == 0));
        System.out.println("bol 值为 " + bol);   //false     ;
        System.out.println("a 值为 " + a); //22
        boolean bo2 = ((b++ % 3) == 0) && (((++b & 7) == 0));
        System.out.println("bo2 值为 " + bo2);   //false     ;
        System.out.println("b值为 " + b); //21

练习:程序输出

        boolean x = true;
        boolean y = false;
        short z = 42;
        
        if ((z++ == 42) && (y = true)) {
            z++;
        }
        if ((x = false) || (++z == 45)) {
            z++;
        }
        System.out.println("z=" + z);
posted @ 2023-03-08 21:00  晓枫的春天  阅读(644)  评论(0编辑  收藏  举报