第9篇:Java运算符简介
第9篇:Java运算符简介
一、核心知识点
- 算术运算符:
+-*/%++-- - 赋值运算符:
=及复合赋值(+=、-=等) - 比较运算符:
==!=<><=>=instanceof - 逻辑运算符:
&|!^&&|| - 位运算符:
&|^~<<>>>>> - 三元运算符:
条件 ? 真值 : 假值 - 运算符优先级(括号最优先)
二、通俗讲解(1分钟开心学)
1. 算术运算符(小心除法)
/:整数除法得到整数,5/2=2(不是2.5),想要小数必须有浮点数参与:5.0/2%:取余,结果符号与被除数相同:-5%2 = -1,5%-2 = 1++/--:前置先变后用,后置先用后变
2. 逻辑运算符(短路与非短路)
&&:短路与,左边false右边不执行||:短路或,左边true右边不执行&/|:非短路,两边都执行(通常用于位运算)
生活类比:
&&就像“如果今天下雨而且我没带伞”,如果“没下雨”,后面“没带伞”就不再检查了。&则一定两边都检查,浪费精力。
3. 位运算符(直接操作二进制,效率高)
&按位与、|按位或、^异或、~取反<<左移(相当于乘2的幂)、>>右移(符号位填充)、>>>无符号右移(0填充)
4. 三元运算符简化if-else
intmax=(a>b)?a:b;5. 优先级速记:括号 > 单目 > 算术 > 移位 > 比较 > 逻辑 > 赋值
三、实操代码案例 + 场景说明
场景:写一个简单的计算器,处理用户输入的整数运算。
publicclassOperatorDemo{publicstaticvoidmain(String[]args){inta=10,b=3;System.out.println("a + b = "+(a+b));System.out.println("a - b = "+(a-b));System.out.println("a * b = "+(a*b));System.out.println("a / b = "+(a/b));// 3System.out.println("a % b = "+(a%b));// 1// 自增intx=5;inty=x++;// y=5, x=6intz=++x;// x先变7, z=7// 逻辑短路booleanflag=false;intnum=10;if(flag&&(num++>5)){}System.out.println(num);// 10,短路,num++未执行// 位运算intn=7;// 111System.out.println(n<<2);// 28 (11100)System.out.println(n>>1);// 3 (11)System.out.println(-8>>2);// -2 (符号位填充)System.out.println(-8>>>2);// 大正数,无符号右移}}四、避坑要点
| 错误/误区 | 后果 | 正确做法 | |
|---|---|---|---|
| 整数除法误以为得到小数 | 5/2得到2 | 使用5.0/2或5/2.0 | |
==比较字符串内容 | 比较地址,可能false | 用equals()比较内容 | |
&&和&混淆 | &左边false右边仍执行,可能产生副作用 | 逻辑判断用&&、` | ` |
| 移位超过位数宽度 | 1 << 33等于1 << 1(取模) | 了解规则:int移位只取低5位,long取低6位 |
五、面试高频考点
Q1:&&和&的区别?
&&是短路与,左边false则右边不执行;&是非短路与,两边都执行。&也可用于位运算。
Q2:>>和>>>的区别?
>>右移高位补符号位(正数补0,负数补1),>>>无符号右移高位始终补0。
Q3:a += b和a = a + b有区别吗?
复合赋值
+=会隐式类型转换,例如byte a=1; a+=1;编译通过,而a=a+1需要强制转换。
六、练习题
- 计算:
(2 + 3 * 4) / 5 - 6 % 4的结果。 - 代码分析:
int a=10; a += a++ + ++a;最后a的值是多少?(写出运算过程) - 动手:用位运算判断一个整数是奇数还是偶数(最高效写法)。
👉 下一篇预告
《Java操作符有哪些?》
内容简介:运算符完整清单,字面量详解,优先级表格,结合性规则。
💡 学完这篇,你将全面掌握Java操作符,不再被复杂的表达式绕晕。
📌下一篇预计明天10:00更新
👉 点击关注我,更新后第一时间收到推送!
📌 本系列每天一篇,建议收藏 + 关注,一起30天从入门到就业。
