JavaSE03:运算符

一、按照操作数个数的分类

1、一元运算符:操作数一个 +a

例如:正号+、负号-、自增++、自减–、逻辑非!、按位取反~

2、二元运算符:操作数两个 a > b

例如:加+、减-、乘*、除/、模%、大于>、小于<、大等于>=、小等于>=、
赋值(=、+=、-=、*=、/=、%=、>>=、<<=)、逻辑与(&)、逻辑或(|)、逻辑异或( ^ )、
短路与(&&)、短路或(||)、左移(<<)、右移(>>)、无符号右移(>>>)、
按位与(&)、按位或(|)、按位异或( ^ )

3、三元运算符:操作数三个 max ? x : y

例如: ? :

二、运算符分类

1、算术运算符

加 +
减 -
乘 *
除 /

特殊:整数/整数,结果只保留整数部分

取余 %

特殊:只看被模数的正负号 被模数%模数

正号:+
负号:-
自增:++
自减:–

但是++在前还是在后,对于整个表达式的计算来说是不一样的。
++在前,先自增,然后取自增后变量的值,
++在后,先取变量的值,然后变量自增。

2、赋值运算符

(1)基本的赋值运算符:=

赋值操作:把“=”右边的常量、变量中值、表达式计算的值赋给“=”左边的变量
运算顺序:把“=”右边的整个表达式先算完,才赋值

(2)扩展的赋值运算符:+=、-=、*=、/=、%=

*注意:所有的赋值运算符的=左边一定是个变量
扩展赋值运算=右边的计算结果的类型如果比左边变量的数据类型大的话,会强制类型转换,所以结果可能会有风险:溢出或损失精度
扩展赋值运算符的计算:①赋值最后算,②加载数据的顺序时把左边的变量的值先加载,再去和右边的表达式进行计算

		int i=1;
		int j=5;
		j *= i++ + j;
		/*
		javap -c  查看
		j *= i++ + j;等价于j=j*(i++ + j)
		第一步:先把j=5放进操作数栈
		i++:先i=1,后i=2,把2放进操作数栈
		1+j=1+5=6
		j *= 6 等价于 j = j * 6;
		j = j * 6 = 5*6=30
		*/*

3、比较运算符

大于 >
小于 <
大等于 >=
小等于 <=
等于 ==(比较) =(赋值)
不等于 !=

比较运算符的最后结果只有两种:ture、false
所以比较运算符可以用来作为:判断条件、逻辑运算符的操作数

4、逻辑运算符

逻辑运算符的操作数必须是布尔值,结果也是布尔值
逻辑与:&
类似:且,有假即假
true & true=true
true & false=false
false & true=false
false & false=false

逻辑或:|
类似:或,有真为真
true | true=true
true | false=true
false | true=true
false | false=false

逻辑非:!
类似:取反,
!ture=false
!false=true

逻辑异或:^
类似:求不同,不同为真
true ^ true=false
true ^ false=true
false ^ true=true
false ^ false=false

短路与:&&
结果:和&一样
运算规则:如果&&的左边是false,右边就不看了,结果就是false
true & true=true
true & false=false
false & ?=false

短路或:||
结果:和|一样
运算规则:如果||的左边是true,右边就不看了,结果就是true
true | ? =true
false | true =true
false | false =false

5、条件运算符

条件运算符是唯一的三元运算符,所以也叫三元运算符
语法格式:条件表达式 ? 结果表达式1 : 结果表达式2

整个表达式的结果:当条件表达式为true时,就取结果表达式1的值,否则就取结果表达式2的值

代码示例:
①布尔类型

boolean marry = false;
System.out.println(marry ? "已婚" : "未婚");

②求最值;

		int x = 4;
		int y = 2;
		int max = x>=y ? x : y;
		/*
		等价于:
		if(x>=y){
			max = x;
		}else{
			max = y;
		}
		*/
		System.out.println(max);

6、位运算符

左移:<<

  • 运算规则:<<几位,就乘以2的几次方
  • 二进制补码左移几位,右边补0

右移:>>

  • 运算规则:>>几位,就除以2的几次方

  • 二进制补码右移几位,左边补0或1,看最高位

无符号右移:>>>

  • 运算规则:二进制补码右移几位,左边补0,对于负数来说,移完,变正数

按位与:& 有0为0
1&1=1
1&0=0
0&1=0
0&0=0

按位或:| ,有1为1
1&1=1
1&0=1
0&1=1
0&0=0

按位异或:^ ,不同为1,相同为0
1^1=0
1^0=1
0^1=1
0^0=0

按位取反:~ ,一元运算符
~1=0
~0=1

如何区分 &, |, ^ 是逻辑运算符还是位运算符?
如果操作数是boolean类型,就是逻辑运算符
如果操作数是整数,那么就位运算符。

三、运算符优先级

在这里插入图片描述

记住优先级不容易,要遵循原则:
1、表达式不要太复杂,可以分为多行
2、如果要混合运算,先算的用()

四、运算符说明

1、算术运算符
数字和单个字符可以使用算术运算符。
其中+用于字符串时,表示拼接。

2、赋值运算符
右边的常量值、表达式的值、变量的值的类型必须与左边的变量一致或兼容(可以实现自动类型转换)或使用强制类型转换可以成功。

3、比较运算符
其他的比较运算符都是只能用于8种基本数据类型。
其中的==和!=可以用于引用数据类型的比较,用于比较对象的地址。

4、逻辑运算符
逻辑运算符的操作数必须是boolean值

5、条件运算符
?前面必须是条件,必须是boolean值
结果表达式1和结果表达式2要保持类型一致或兼容

6、位运算符
一般用于整数系列

以上运算符都是针对基本数据类型设计的。
能够用于引用数据类型只有基本的赋值运算符= ,和比较运算符中的==和!=。
其中字符串类型还有一个+ ,表示拼接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值