JAVA逻辑运算符

逻辑运算符

基本语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8J1lIcXw-1689483231249)(F:\BaiduNetdiskDownload\image-20220312001943403.png)]

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

  • 运算符说明:

    • &和&&:表示“且”关系,当符号左右两边布尔值都是true时,结果才能为true。否则为false
    • |和||:表示“或”关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false
    • !:表示“非”关系,当变量布尔值为true时,结果为false。当变量布尔值为fasle时,结果为true
    • ^:当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false
      • 理解:异或,追求的是“异”
  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成 x > 3 & x < 6

  • 区分“&”和“&&”;

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

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

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

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

  • 区分“|”和“||”:

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

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

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

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

代码举例:

/*
	比较运算符
	1.&  &&  |  ||  !  ^
	2.说明
	  ①逻辑运算符针对的都是boolean类型的变量进行的操作
	  ②逻辑运算符运算的结果也是boolean类型
	  ③逻辑运算符常常使用条件判断结构、循环结构中
*/
class LogicTest{
    public static void main(String[] args){
        
        
        /*
       区分:& 和 &&
        	
       相同点:两个符号表达的都是“且”的关系。只有当符号左右两边的类型值均为true时,结果才为true
       执行过程:
        1)如果符号左边是true,则& && 都会执行符号右边的操作
        2)如果符号左边是false,则&会执行符号右边的操作,  逻辑&
     						而&&不会执行符号右边的操作   短路&&
        3)开发中,我们推荐使用短路&&
        */
        boolean b1 = true;
        b1 = false;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");   
        }
        System.out.println("num1 = "+num1);   //我叫郭德纲    num1 = 11
        
        
        boolean b2 = true;
        b2 = false;
        int num2 = 10;
        if(b2 && (num2++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");
        }
        System.out.println("num2 = "+num2);   //我叫郭德纲    num1 = 10  &&前为false直接结束,不执行后面的操作
        
        //*******************************************************
        /*
        	区分:| 和 ||
        	
       相同点:两个符号表达的都是“或”的关系。只要符号两边存在true的情况,结果就为true
       执行过程:
        	1)如果符号左边是true,则|会执行符号右边的操作,而||不会执行符号右边的操作
        	2)如果符号左边是false,则|  ||都会执行符号右边的操作,  
        	3)开发中,我们推荐使用短路||
        */
        boolean b3 = false;
        int num3 = 10;
        if(b3 | (num3++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");
        }
        System.out.println("num3 = "+ num3);     //输出:床前明月光   num3 = 11
        
        boolean b4= false;
        int num4 = 10;
        if(b4 || (num4++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");
        }
        System.out.println("num4 = "+ num4);   //输出:床前明月光   num4 = 11
        
        boolean b5 = false;
        b5 = true;
        int num5 = 10;
        if(b5 | (num5++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");
        }
        System.out.println("num5 = "+ num5);  //输出:床前明月光   num5 = 11
        
        boolean b6 = false;
        b6 = true;
        int num6 = 10;
        if(b6 || (num6++ > 0)){
            System.out.println("床前明月光");
        }else{
            System.out.println("我叫郭德纲");
        }
        System.out.println("num6 = "+ num6);   //输出:床前明月光   num6 = 10
        
        
    }
}

案例与练习

案例:

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的值
public class CompareLogicExer{
	public static void main(String[] args){
        int a;
        int b;
        a = b = 20;
        boolean bo1 =(++a % 3 == 0) && (a++ % 7 == 0);
        System.out.println("a的值为:"+a",bo1的值为:"+bo1);
        //a的值为22,bo1的值为true
        boolean bo2 = (b++ % 3 == 0) && (++b % 7 == 0);
        System.out.println("b的值为:"+b",bo2的值为:"+bo2);
        //b的值为21,bo2的值为false
    }
}

练习1:区分&和&&

int x = 1;
int y = 1;

if(x++ == 2 & ++y == 2){
	x = 7;
}
System.out.println("x=" + x + ",y=" + y);  //2 2
int x = 1,y = 1;

if(x++ == 2 && ++y == 2){
	x =7;
}
System.out.println("x="+x+",y="+y);    //2  1

练习2:区分 | 和 ||

int x = 1,y = 1;

if(x++==1 | ++y==1){
	x =7;
}
System.out.println("x="+x+",y="+y);    //7  2
int x = 1,y = 1;

if(x++==1 || ++y==1){
	x =7;
}
System.out.println("x="+x+",y="+y);    //7  1

练习3:程序输出

class  Test  {
	public static void main (String []  args)  {
		boolean x = true;
        boolean y = false;
        short z = 42;
         
        if ((z++ == 42) && (y = true)) {     //z = 43   注意此处的是 = 赋值 不是==判断
            z++;								//z = 44
        }
        if ((x = false) || (++z == 45)) {       //++z = 45
            z++;								//z++ = 46
        }

        System.out.println("z=" + z);   //z = 46
	}
}

= 赋值 不是==判断
z++; //z = 44
}
if ((x = false) || (++z == 45)) { //++z = 45
z++; //z++ = 46
}

    System.out.println("z=" + z);   //z = 46
}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值