04-运算符

nobility 发布于 2021-02-24 1518 次阅读


运算符

算数运算

符号 含义
+
-
*
/
% 取余
++ 自增
-- 自减

y = x++;//当自增自减运算符与赋值运算符一起使用时,都是先算++后算赋值

对于y的值:x++用加之前的值,++x用加之后的值

对于x本身:都是自增

两个引用数据类型相加,若是包装类则自动装箱拆箱完成操作,若是其他的则调用toString()方法完成拼接

System.out.println(7%3);	//1
System.out.println(7%-3);	//1
System.out.println(-7%3);	//-1
//余数的正负与左部相同,与右部无关

int a = 1;
a = a++;	//1

int m = 1;//2,1,0
int n = 2;//3,2,1
int sum = m++ + ++n - n-- - --m + n-- - --m;//2
//				1		+		3 - 3		-		1 + 2		-		0

赋值运算

符号 含义
= 赋值
+=、-=、*=、/=、%= 运算赋值
int a = 1;
a += 1;	//2
//a=a+1;的简写

int b = 1;
b += 1+2;	//4
//b = b + 1 +2;的简写

byte x = 1;
x = x + 2	//报错
x = (byte) (x + 2);	//3
//数值计算时,会将小数据类型自动转换为大数据类型,结果是大的数据类型
//在赋值时,数值类型是int,可能会有数据损失,需要强制转换
x += 2;	//3
//+=相当于一个赋值,可以理解为 byte x = 2; 所以自动转换不会报错
x += 200;	//-53
//由于无法得知+=后是否会超过范围,所以就算超过范围也不会报错

关系运算

符号 含义
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 不等于
== 等于
对象 instanceof 类 判定对象是否是类或该类子类产生的

对于==符号,对于数值类型比较两个值是否一致,对与引用数据类型比较两个地址是否一致

逻辑运算

符号 含义
&
|
^ 异或
&& 短路与
|| 短路或

位运算

符号 含义
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 按位左移
">>" 按位右移(补符号位)
">>>" 无符号按位右移(补0)
//交换两个变量的值
int a = 1;
int b = 2;
//方法1
int t = a;
a = b;
b = t;
//方法2
a = a + b;
b = a - b;
a = a - b;
//方法3
a = a ^ b;
b = a ^ b;
c = a ^ b;

条件运算符

符号 含义
?: 条件为真返回第一表达式,反正返回第二个

运算符的优先级

优先级 运算符 结合性
1 ( ) [ ]  . 从左到右
2 !  ~  ++  -- 从右到左
3 *  /  % 从左到右
4 +  - 从左到右
5 <<  >>  >>> 从左到右
6 <  <=  >  >=  instanceof 从左到右
7 ==  != 从左到右
8 & 从左到右
9 ^ 从左到右
10 | 从左到右
11 && 从左到右
12 || 从左到右
13 ?: 从左到右
14 =  +=  -=  *=  /=  %=  &=  |=  ^=  ~=  <<=  >>=  >>>= 从右到左
15 , 从右到左

单算移关与,异或逻条赋

括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

此作者没有提供个人介绍
最后更新于 2021-02-24