史上最强运算符总结!!都到我碗里来

本文详细总结了Java中的各种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和位移运算符,特别讨论了短路求值和条件运算符的概念,是理解Java运算符的全面指南。

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

1.算术运算符

1.1基本四则运算符(+ 、 - 、 * 、 / 、%)

基本四则运算符包括:加+ 、减- 、乘* 、除/ 、和取余% 。
规则较为简单,需要注意的是:

  • 除法中除数与被除数的数值类型,例如:
		int a = 10;
 		int b = 20;
 		System.out.println(a / b);
 		//结果为0
  • 0不能做除数
		int a = 1;
 		int b = 0;
 		System.out.println(a / b);
 		//结果会编译出错
出错原因为ArithmeticException(算术异常)。
  • %不仅仅可以对int求模,也能对double求模
	System.out.println(3.5 % 2.0);
		// 1.5

1.2增量赋值运算符(+= 、 -= 、 *= 、 /= 、 %=)

增量赋值运算符表示:用被赋值的数据本身来进行一些运算,再将结果赋值给它。例如:

	int a = 10;
	a += 1;

等同于

	int a = 10;
	a = a + 1;

1.3自增/自减运算符(++ 、 --)

i++ 、 i-- 表示参与运算之后数值才会加1或减1
++i 、 --i 表示数值先加1或减1,再参与运算
		int a = 10;
		int b = ++a;
		System.out.println(b);//结果为11
		int c = a++;
		System.out.println(c);//结果为11
		int a = 10;
		int b = a++;
		System.out.println(b);
		//10
  		int a = 10;
		b = ++a;
		System.out.println(b);
		//11
		int a = 10;
		a = a++;
		System.out.println(a);
		//10
		int a = 10;
		a = ++a;
		System.out.println(a);
		//11

2.关系运算符(== 、 != 、 < 、 > 、 <= 、 >=)

关系运算符的表达式返回值都是boolean型。

		int a = 1;
		int b = 2;
		System.out.println(a == b); //false
		System.out.println(a > b);  //false
		System.out.println(a < b);  //true
		System.out.println(a != b); //true
		System.out.println(a <= b); //true
		System.out.println(a >= b); //false

3.逻辑运算符(&& 、 || 、 !)

3.1 逻辑与 &&

表达式1 && 表达式2  //有假即为假
	int a = 10;
	int b = 20;
	int c = 30;
	System.out.println(a < b && b < c);
	//结果为true
  • 表达式1和表达式2都为真的时候,整个表达式为true
  • 若表达式1为假,则不会去执行表达式2,整个表达式为false (短路现象)

3.2 逻辑或 ||

表达式1 || 表达式2  //有真即为真
	int a = 10;
	int b = 20;
	int c = 30;
	System.out.println(a < b || c < a);
	//结果为true
  • 表达式1和表达式2都为假的时候,整个表达式为false
  • 若表达式1为真,则不会去执行表达式2,整个表达式为true (短路现象)

3.3 逻辑非 !

		int a = 10;
		int b = 20;
		System.out.println(!a < b);
		//结果为false

3.4 短路求值

		System.out.println(1 > 2 && 1 / 0);  //false
		System.out.println(1 < 2 || 1 / 0);  //true

上述两个表达式都发生了短路现象,没能运行到第二步,1/0并没有被求值,故没有发生异常。

注意:
&和|不支持短路求值。

		System.out.println(1 > 2 & 1 / 0);  //程序抛出异常
		System.out.println(1 < 2 | 1 / 0);  //程序抛出异常

4.位运算符(& 、 | 、 ~ 、 ^)

java中对数据的操作的最小单位是二进制位。

4.1 与 &

		有0就是0
		
		01010000
	&	00011100
		00010000

4.2 或 |

		有1就是1 
		
		01010000
	|	00011100
		01011100

4.3 非 ~

按位取反

		01010000
		10101111

4.4 异或 ^

 不一样的位置进行或,一样的位上就是0。
 
		01010000
	^	00011100
		01001100

5.位移运算符(<< 、 >> 、 >>>)

5.1 左移 <<

方法:最左侧位不要,在最右侧补0。

  00010100 <<1 = 00101000    20->40
  00010100 <<2 = 01010000    20->80

左移相当于乘2。

5.2 右移 >>

方法:最右侧位不要,在最左侧补符号位。(正数补0,负数补1)
第一位是符号位,正数是0,负数是1。

  00010100 >>1 = 00001010    20->10
  00010100 >>2 = 00000101    20->5

左移相当于除2。

在此也需要了解一下补码、反码
例:

1000 0001    原码
1111 1110    反码 :符号位不变,其他位取反
1111 1111    补码 :反码+1

5.3 无符号右移 >>>

在右移的基础上,不管符号位是0还是1,统统补0。

10001101 >>>1 = 01000110  

6.条件运算符

又叫三目运算符,是条件判断语句的简化写法。
当表达式1的值为true时,整个表达式的值为表达式2的值;
当表达式1的值为false时,整个表达式的值为表达式3的值;

表达式1 ? 表达式2 : 表达式3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值