Java 运算符

本文深入讲解了Java中的各种运算符,包括自增自减运算符的使用方式,位运算符的功能及其实现原理,以及instanceof运算符的使用场景。同时,文章详细解释了运算符的优先级和移位运算的规则。

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

本人博客园链接 https://www.cnblogs.com/zongmin/p/11339019.html

运算符

自增和自减运算符

  • ++ :操作数值型变量,++ 放操作数左边,操作数自身加 1,返回加 1 后的结果;++ 放操作数右边,操作数自身加 1, 返回加 1 前的结果;
  • – :操作数值型变量,-- 放操作数左边,操作数自身减 1,返回减 1 后的结果;-- 放操作数右边,操作数自身减 1, 返回减 1 前的结果;
int c = 5;
int d = ++c;
System.out.println(a);  //6
System.out.println(d);  //6

int a = 5;
int b = a++;
System.out.println(a);  //6
System.out.println(b);  //5

位运算符

  • & :按位与
  • | :按位或
  • ~ :按位非(键盘数字 1 左边键)
  • ^ :按位异或
  • << :左移运算符
  • >>:右移运算符
  • >>>:无符号右移运算符

需要记住一点,位运算操作的是数值在计算机存储的二进制码(补码)

System.out.println(5 & 9);   //1
System.out.println(5 | 9);   //13
System.out.println(~-5);     //4
System.out.println(5^9);     //12

左移运算符是将操作数的二进制码整体左移指定位数,左移后右边空出来的位以 0 填充,左移 n 位,相当于乘以 2 的 n 次方。

System.out.println(5 << 2); //20
System.out.println(-5 << 2);  //-20

右移运算符有两个:>>>>>

  • 对于 >> 运算符而言,将操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位填充,即如果操作数原来是正数,则左边补 0;如果操作数是负数,则左边补 1。因此,右移 n 位,相当于除以 2 的 n 次方。

  • ` 是无符号右移运算符,将操作数的二进制码右移指定位数后,左边空出来的位全补 0 。

System.out.println(-5 >> 2);  //-2
System.out.println(-5 >>> 2);  //1073741822

进行移位运算的规则:

  • 对于 byte、short 或 char 类型的操作数会先自动类型转换为 int 类型后再移位;
  • 对于 int 类型的整数移位 a >> b,当 b > 32时,系统先用 b 对 32 求余(因为 int 类型只有 32 位),得到的结果才是真正移位的位数;
  • 对于 long 类型的整数移位 a >> b,当 b > 64时,先用 b 对 64 求余,得到的结果才是真正移位的位数。

instanceof

instanceof 是一个二元运算符,a instanceof B 判断 a 是否为 B 的实例,B 是类或者接口、父类或者父接口,即要求 B c = a 成立,最终返回 boolean 类型值。

public static void main(String[] args) {
    Double obj = 1.0;
	
    //obj是Double的实现类
    System.out.println(obj instanceof Double);  //true
    //obj是Object的子类的实现类
    System.out.println(obj instanceof Object);  //true
}

运算符优先级

运算符说明Java 运算符
分隔符. [] () {} , ;
单目运算符++ – ~ !
强制类型转换运算符(type)
乘法/除法/求余* / %
加法/减法+ -
移位运算符<< >> >>>
关系运算符< <= >= > instanceof
等价运算符== !=
按位与&
按位异或^
按位或|
条件与&&
条件或||
三目运算符? :
赋值= += -= *= /= &= |= ^= %= <<= >>= >>>=

记住 && 和 || 优先级顺序技巧:将 && 看成一般算式的乘法,一般算式中乘法优先级最高,所以 && 优先级比 || 高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值