【面试】JAVA六种运算符详解及优先级

本文详细介绍了Java中的各种运算符,包括算术运算符、赋值运算符、关系/比较运算符、逻辑运算符、位运算符、三元运算符以及运算符的优先级。特别讨论了自增/自减运算符、位运算符在处理整数补码时的规则,并给出了实际示例。此外,还强调了运算符的使用注意事项和逻辑运算符的短路特性。
摘要由CSDN通过智能技术生成

一、算术运算符

+ - * / % ++ --
  1. % 取模运算 - 取余运算
    9%4=1, 3%8=3
    -9%4=-1, 9%-4=1, -9%-4=-1
    %的结果的正负看的是%左边数据的正负 -> 如果左边的数字是一个正数,那么结果就是正数;反之,那么结果就是负数。

  2. ++/-- 自增/自减运算
    ++/–如果在变量之前,那么先自增/自减,然后参与后续运算
    ++/–如果在变量之后,那么先将值取出来参与运算,然后变量再自增/自减

    int i = 6;
    // int j = i++ + ++i; -> 14
    int j = ++i + i++; -> 14

    ==byte/short/char都可以参与自增运算=
    char c = ‘b’;
    int i = c + 2; -> 100

    ‘a’ ~ ‘z’ -> 97~122 ‘A’ ~ ‘Z’ -> 65~90 ‘0’ ~ ‘9’ -> 48~57

    char c = ‘0’;
    int i = c + 3; -> 51

二、赋值运算符

= += -= *= /= %= &= |= ^= <<= >>= >>>=
  1. byte/short/char可以参与赋值运算

  2. 除了=以外,其余的符号都要求这个变量得先有值

  3. 注意:在Java中不支持连等定义但是支持连等赋值
    int i = 5;
    i += i *= i -= 3; -> 15
    i = 5 + (5 * (5 - 3));

    int j = 7;
    j -= j *= j++; -> -42
    j = 7 - (7 * 7);

三、关系/比较运算符

==相等 !=不等 > < >= <=

注意:不支持连着的比较方式

四、逻辑运算符

&与 |或 !非 ^异或 &&短路与 ||短路或

注意:逻辑运算符算的是逻辑值
·true&true=true true&false=false false&true=false
false&false=false
·true|true=true true|false=true false|true=true
false|false=false
·!true=false !false=true
·true^true=false true^false=true false^true=true
false^false=false
&&:如果前边的表达式的结果为false,则后边的表达式不再运算,整个表达式的结果就确定为false
||:如果前边的表达式的结果为true,则后边的表达式就不再运算,整个表达式的结果就确定为true
注意:||如果在&&的前边可以把&&短路掉

五、位运算符

& | ^ << >> >>> ~取反

注意:位运算符针对整数的补码进行运算,所以运算结果也是补码。
在这里插入图片描述
所有的奇数的二进制的最右边末尾的值为1,偶数的最末尾的值是0。二进制的第一位代表符号位。 1代表‘-’,0代表‘+’。
在这里插入图片描述
位运算符计算的是补码,正数的原反补三码相同,而负数则要将最后结果转化为原码。
负数的左移和右移

  1. 负数的右移:需要保持数为负数,所以操作是对负数的二进制位左边补1。如果一直右移,最终会变成-1。
  2. 负数的左移:和整数左移一样,在负数的二进制位右边补0,一个数在左移的过程中会有正有负的情况,所以切记负数左移不会特殊处理符号位。如果一直左移,最终会变成0。

六、三元运算符

格式:逻辑值 ? 表达式1 : 表达式2
  1. 执行顺序:先执行逻辑值,如果逻辑值为true,则执行表达式1;反之则执行表达式2
  2. 三元表达式本身是一个表达式,意味着这个表达式执行完成之后需要有一个结果 — 这个结果必须能定义对应类型的变量来接住
    如:a > b ? “abc” : true; -> 没有办法定义一个统一类型的结果来存储,这种写法就是错误的
    三元表达式中的两个式子的结果类型必须能够转化

七、运算符的优先级

~ ! ++ -- * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值
一元 > 二元 > 三元 > 赋值
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值