JAVA中常用的运算

本文深入探讨了Java中的关系运算,包括大于、小于、等于等比较操作,以及它们与布尔类型的交互。接着,介绍了三目运算符的使用,展示了其在简化条件分支和返回任意类型结果的能力。此外,详细讲解了赋值运算符,特别是增强赋值运算符的特性,并讨论了位运算如非、与、或、左移、右移等,以及它们在效率优化中的应用。最后,提到了逻辑运算符的短路行为和真值表,以及运算的优先级规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 关系运算

. < >= <= != ==(注意是2个等号)

关系运算返回的结果是布尔类型(TRUE\FSLAE)

System.out.println(5>3==true);
System.out.println(2<3==true);
System.out.println(5>=3==true);
System.out.println(2>4==false);
System.out.println(3!=4==true);
System.out.println(3==3==true);左结合性
System.out.println(5>3==true);
System.out.println(5>3==true);
System.out.println('a'=='a'true); 
//char类型也可以进行比较
​
  1. 三目运算(3个操作数,简化了分支结构,且返回部分支持任意类型)

    int age = 18;
    String result = age>=18?"成年":"未成年";
    System.out.println(result);
    //逻辑表达式(布尔类型)?true的返回值:fa

    三目运算也可以连用

    int input=0;
    int result = (input==-1?0:(input>0?1:-1));
    System.out.println(result);
    //运行结果是-1
  1. 赋值运算

增强赋值运算,不会有数据类型默认提升的问题。

+= -= *= /= %= |= &=

int i=1;
i+=3;//i=i+3
byte byte 1=2;
byte1+=3;//这样是能通过编译
byte1=byte1+3;//这样是通不过的
​
  1. 位运算

    • 非 ~

    • 与 &

    • 或 |

    • 左移<<

      int i=4;//0100 //-> 0001 0000
      int result=i<<2;//向左移动,右边补0
      system.out.println(result==16);
      int i2=-4;//0100 //-> 0001 0000
      int result=i2<<2;//向左移动,右边补0
      system.out.println(result==-16);
      //左移操作(i*2的n次方),以乘以2的n次方的效率高,是一种高效率的运算方式。
    • 右移>>

      int i=4;//向右移动,除以2的n次方
      int result=i>>2;
      system.out.println(resule==16)
      int i2=-4;//向右移动,除以2的n次方
      int result=i2>>2;
      system.out.println(resule==-16)
    • 无符号右移>>>(左边一律补0)(只适用于字节截取)

      int i=4;
      int result=i>>>2;//无符号右移
      System.out.println(result==16)
      int i2=-4;//1110 1111 -> 0111 0111(补码)
      int result=i2>>>2;//无符号右移
      System.out.println(result==1073741823);
    • 如何区分位运算和逻辑运算?

      位运算操作数是(二进制)数字,逻辑运算操作数是布尔值。

  1. 逻辑运算(两边的操作数都为布尔类型)

  • 与 & &&

    单与和双与的区别:

    在java中都可以进行逻辑运算,运算结果都符合真值表

    双与(&&)有短路作用,能够确定最终逻辑运算的结果时,后面的代码将不被运行。

    单 与(&),在能够确定最终逻辑运算的结果时,后面的代码也会运行。

    利用双与防止空指针异常

  • 或| ||

    单与双的区别

    同理,如果左边为TRUE时,不管右边是TRUE还是FALSE,结果都是TRUE。单或(|)还会继续执行后边的代码,而双或(||)将不执行后面的代码

  • 异或

    System.out.println(true ^ true ==false);
    System.out.println(flase ^ true==true);
  • 真值表

    • 与运算:全TRUE为TRUE,见FLASE为FLASE

    • 或运算:全FLASE为FLASE,见TRUE为TRUE

  1. 运算的优先级

  • 操作数越少,优先级越高

  • 如果不能确定优先级,需要加括号

  • 单目运算的结合性是从右到左

  • 优先级相同的运算符按照事先约定的结合方向进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷亚文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值