第6篇 运算符
1. 位运算
/* A = 0011 1100; * B = 0000 1101; * ---------------------------------- * 与: * A&B = 0000 1100;//都为1的才是1 * 或: * A|B = 0011 1101;//有1的就是1 * 异或: * A^B = 0011 0001;//只有一个1的才是1 * 非: * ~A = 1100 0011;//所有位取反 */
// << : a<<n, a(转二进制后)左移n位 相当于乘了2^n System.out.println("2*8 = 2<<3 = " + (2<<3));//16 // >> :a>>n, a(转二进制后)右移n位 相当于除了2^n System.out.println("24/8 = 24>>3 =" + (24>>3));//8
2. 优先级
算术运算符:+,-,*,/,%,++,--
赋值运算符:=
扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=
关系比较运算符:>,>=,<,<=,==
逻辑运算符:&&,&,||,|,!,^
位运算符:&,|,~,^,<<,>>,>>>
- >>>(无符号右移运算符)和 >> 的区别在于: >>> 负数高位补 0;>> 负数高位补1;
三目运算符:? :
- (expression) ? if-true-statement : if-false-statement;
2.1逻辑与或非优先级:
- 逻辑非>逻辑与>逻辑或
2.2 符号优先级表
优先级 | 运算符名字 | 说明 | 类 | 结合性 | 其他说明 |
---|---|---|---|---|---|
1 | () [] . {} | 括号,方括号,点, 集合 | 分隔符 | 从左往右 | |
2 | !+(正)-(负)~ ++ -- | 逻辑非,正号,负号,按位取反,自增,自减 | 一元运算符 | 从右往左 | |
3 | (type) | 强制类型转换运算符 | 无 | 本质是()提出来的优先级 | |
4 | * / % | 乘,除, 取余 | 二元运算符 | 从左往右 | |
5 | + - | 加,减 | 二元运算符 | 从左往右 | |
6 | << >> >>> | 左移,右移,无符号右移 | 位移运算符 | 从左往右 | a>>b, a (转二进制后)右移b位 |
7 | < <= > >= instanceof | 小于,小于等于,大于,大于等于,类属 | 关系运算符 | 从左往右 | |
8 | == != | 等价于,不等于 | 等价运算符(关系运算符) | 从左往右 | |
9 | & | ^ | 按位与,按位或,按位异或 | 位逻辑运算符 | 从左往右 | 按位与>按位异或>按位或 |
10 | && || | 逻辑与,逻辑或 | 逻辑运算符 | 从左往右 | 逻辑与>逻辑或 |
11 | ? : | (expression) ? if-true-statement : if-false-statement; | 三目运算符 | 从左往右 | |
12 | = += -= *= /= | 赋值运算符 | 从右往左 | ||
12 | &= |= ^= %= <<= >>= >>>= | 赋值运算符 | 从右往左 |
2.3 &与&&,|与||的异同
-
&与&&
- 相同点:都需要两边为true结果才是true
- 不同点:&是位逻辑运算,即使左边为false,右侧照样执行。但是&&如果左边为false,将直接忽略右侧,有人把这种性质称为短路,(短路与)。
-
|与||
-
相同点:有一边为true结果就是true
-
不同点:&是位逻辑运算,即使左边为true,右侧照样执行。但是&&如果左边为true,将直接忽略右侧,(短路或)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!