目录
前言
1. 基本四则运算符:加减乘除模(+ - * / %)
2. 增量运算符 += -= *= %=
3.自增/自减运算符 ++ --
4. 关系运算符== != < > <= >=
5. 逻辑运算符&& || !和& |
5.1 && || !
5.2 & |
6.位运算符& | ~ ^
7. 移位运算<< >> >>>
8. 条件运算符 表达式1 ? 表达式2 : 表达式3
前言
关于运算符你真的了解吗?可能你从未留意过运算符的细节,我会以题目和知识点梳理的形式和你一起查缺补漏,希望对你有帮助。
算术运算符
1. 基本四则运算符:加减乘除模(+ - * / %)
(1)都是二元运算符,使用时必须要有左右两个操作数。(2)int / int 结果还是 int 类型,而且会向下取整。(3)做除法和取模时,右操作数不能为 0。(4)% 不仅可以对整型取模,也可以对 double 类型取模,但是没有意义,一般都是对整型 取模的。(5)两侧操作数类型不一致时,向类型大的提升。
1.题目:
System.out.println(5/2); System.out.println((float) 5/2); System.out.println(5/(float)2); System.out.println((float) (5/2));
答案:
这题只要明白这两个知识点,就一定会写对,无需多讲。
知识点:(1)int / int 结果还是int类型,而且会向下取整。
(2)操作数类型不一致时,向类型大的提升。
2.题目:
System.out.println(10%3); System.out.println(-10%3); System.out.println(10%-3); System.out.println(-10%-3);
答案:
解析:
3.题目:
System.out.println(10/0);
答案:
这题只要明白这个知识点,就一定会写对,无需多讲。
知识点: 做除法和取模时,右操作数不能为0。
2. 增量运算符 += -= *= %=
(1)操作符号会自动给你强制类型转换。(2)只有变量才能使用该运算符,常量不能使用。
4.题目:
问:a+=b与a=a+b的区别。
解析:
就是这个知识点:自动给你强制类型转换
3.自增/自减运算符 ++ --
(1)如果单独使用,【前置 ++ 】和【后置 ++ 】没有任何区别(2)如果混合使用,【前置 ++ 】先 +1 ,然后使用变量 +1 之后的值,【后置 ++ 】先使用变量原来的值,表达式 结束时给变量+1(3)只有变量才能使用自增 / 自减运算符,常量不能使用,因为常量不允许被修改
5.题目(了解)
int a=10; a=a++; System.out.println(a);
答案:
4. 关系运算符== != < > <= >=
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
5. 逻辑运算符&& || !和& |
5.1 && || !
逻辑运算符 | 真值 |
&& |
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
|
|| | 两个表达式都为假,结果才是假,只要有一个是真,结果就是真。 |
! |
真变假,假变真。
|
对于 && , 如果 左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式 .对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 .
如:
我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.
5.2 & |
6.位运算符& | ~ ^
当 & 和 | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表 示逻辑运算.
7. 移位运算<< >> >>>
1. 左移 1 位 , 相当于原数字 * 2. 左移 N 位 , 相当于原数字 * 2 的 N 次方 .2. 右移 1 位 , 相当于原数字 / 2. 右移 N 位 , 相当于原数字 / 2 的 N 次方 .3. 由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 的 N 次方的时候可以用移位运算代替 .
8. 条件运算符 表达式1 ? 表达式2 : 表达式3
boolean a=true==true?false?true:false:true; System.out.println(a);
答案:
解析:
以上为我个人的小分享,如有问题,欢迎讨论!!!