Java中运算符及其优先级

Java知识点总结:想看的可以从这里进入

2.6、运算符

运算符就是用来对数值、变量进行计算的符号。

2.6.1、算数运算符
算术运算符
	+	加法运算符(字符串的拼接,数学加号)、正号  
	-	减法运算符、负号
	*	乘法运算符
	/	除法运算符(参与运算的数都是整数时为整数除法,否则为浮点除法)(整数被0除会出现异常,而浮点数则会得到无穷大或者NaN)
	%	求余
	++	自增: 操作数的值增加1
		int a = ++1:先自增,再参与运算		int a = 1;  int b = a++;  int c = ++a;   a=3  b=1 c = 3
		int a = 1++:先参与运算,再自增
	--	自减: 操作数的值减少1
		--1:先自减,再参与运算
		1--:先参与运算,再自减

2.6.2、赋值运算符

赋值运算符可以将一个直接量的值赋给变量,也可以将变量的值赋给另一个变量,还能将表达式的值赋给变量,且它支持连续赋值(但不推荐这么做)。

赋值表达式的运算顺序是先计算右边的值,再将值赋给左边的变量。

赋值运算符
	=	将右操作数的值赋给左侧操作数
	+=、-=、*=、/=	把左操作数和右操作数的值相加、减、乘、除、后赋值给左操作数
	%=:取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数
	<<=:左移位赋值运算符		C <<= 2等价于C = C <<2
	>>=:右移位赋值运算符		C >>= 2等价于C = C >>2=:按位与赋值运算符		   C&= 2等价于C = C&2
	^=:按位异或赋值操作符
	|=:按位或赋值操作符
	
2.6.3、关系运算符

使用关系运算符得出的结果都是布尔型,要么是true,要么是false

关系运算符
	==	判断如果两个操作数的值是否相等,如果相等则条件为真。
	! =	判断如果两个操作数的值是否相等,如果值不相等则条件为真。
	>	判断左操作数的值是否大于右操作数的值,如果是那么条件为真。
	>=	判断左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。
	<	判断左操作数的值是否小于右操作数的值,如果是那么条件为真。
	<=	判断左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。
	instanceof :检查该对象是否是一个特定类型(类类型或接口类型)。
		String name = "Java"
		name instanceof String   结果:true(name是String类型的)
2.6.4、逻辑运算符

逻辑运算符用于连接布尔表达式。

逻辑运算符
	&&:与、且   一假则假,全真才为真
	||:或	   一真则真
	!:非 	  取反
2.6.5、位运算符
位运算符
	&(与):如果相对应位都是1,则结果为1,否则为0
		a:   0 0 1 1 1 1 0 0
		b: 	 1 1 1 1 1 1 1 1
		a&b: 0 0 1 1 1 1 0 0	
	|(或):如果相对应位都是 0,则结果为 0,否则为 1
		a:   0 0 1 1 1 1 0 0
		b: 	 1 1 1 1 1 1 1 1
		a|b: 1 1 1 1 1 1 1 1	
	〜(非):按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
		a:   0 0 1 1 1 1 0 0
		~a:  1 1 0 0 0 0 1 1
	^(异或):如果相对应位值相同,则结果为0,否则为1
		a:   0 0 1 1 1 1 0 0
		b: 	 1 1 1 1 1 1 1 1
		a^b: 1 1 0 0 0 0 1 1
	<<:按位左移运算符。将位向左移动指定的位数。左边超出的位被丢弃,右边空出的位用0填充。。3<<3相当于3乘以2^3
		50 0 0 0 0 1 0 1
		5<<20 0 0 1 0 1 0 0 = 5*2^2 = 20
	>>:按位右移运算符:将位向右移动指定的位数,右边超出的位丢弃。左边空出的位用原来的符号位填充。15>>3为15除以2^3 
		150 0 0 0 1 1 1 1
		15>>30 0 0 0 0 0 0 1 = 15/(2^3) = 1 (整数除法中,结果取整数部分,为1)
	(位移运算符直接操作位,效率很快,在hash等扩容上都是使用的位移(1<<16),所以每次扩容都是2倍)。
	>>>:按位右移补零操作符。将位向右移动指定的位数,无论正负,左边空出的位都用0填充。

&和&&的区别:(|和|| 一个道理)

​ &&是逻辑运算符,与、且的意思。两边表达式一假则假,全真才为真。具有短路功能,如左边运算式为false,则右边的表达式不参与运算

​ &是位运算符,按位与,等式两边表达式都为false时可做逻辑与运算,但等式两边都参与计算,无短路功能。

2*8怎么运算最快?

​ 按位左移运算符操作最快,把2左移3位 2<<3

​ **因为2转换成2进制数为:0000 0010 **

左移三位为:0001 0000 转换成10进制为16

<< >> 的效率是极高的

8>>32:在 Java 中,对于整数类型的右移操作 >>,如果移动的位数等于或超过该类型的大小(对于 int 类型是32位,对于 long 类型是64位),则实际移动的位数会是移动位数对该类型大小取模的结果。因此,对于 int 类型的数值 8 >> 32,实际上等同于 8 >> (32 % 32),即 8 >> 0

public boolean isOdd(int i) 判断奇数偶数

public boolean isOdd(int i){
	return i%2 ! = 0
} 
public boolean isOdd(int i){
	return (i&1) == 1;
}
2.6.6、三目运算符

三目运算符是可以转化成 if、else结构的,但是这种简单的判断优先选择三目运算符,效率更高。

条件运算符(三目运算符)※※※※※※
	(条件)?a:b		如果条件为true则执行a,否则执行b(a和b的数据类型要一致)
2.6.7、优先级

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

辰 羽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值