目录
前言
关于运算符你真的了解吗?可能你从未留意过运算符的细节,我会以题目和知识点梳理的形式和你一起查缺补漏,希望对你有帮助。
算术运算符
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 。
注意:当需要多次判断时,不能连着写,比如:
3 < a < 5
,
Java
程序与数学中是有区别的。
5. 逻辑运算符&& || !和& |
5.1 && || !
运算结果都是
boolean
类型。
逻辑运算符 | 真值 |
&& |
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
|
|| | 两个表达式都为假,结果才是假,只要有一个是真,结果就是真。 |
! |
真变假,假变真。
|
短路求值
&&
和
||
遵守短路求值的规则
对于 && , 如果 左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式 .对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 .
如:
System
.
out
.
println
(
10
>
20
&&
10
/
0
==
0
);
System
.
out
.
println
(
10
<
20
||
10
/
0
==
0
);
我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.
5.2 & |
System
.
out
.
println
(
10
>
20
&
10
/
0
==
0
);
//
程序抛出异常
System
.
out
.
println
(
10
<
20
|
10
/
0
==
0
);
//
程序抛出异常
与&& ||真值无区别,只是&和|会执行完所有语句。
6.位运算符& | ~ ^
1.
按位与
&
:
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0.
2.
按位或
|:
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1.
3.
按位取反
~:
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
4.
按位异或
^:
如果两个数字的二进制位相同
,
则结果为
0,
相异则结果为
1.
关于^
注意
:
当 & 和 | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表 示逻辑运算.
7. 移位运算<< >> >>>
1.
左移
<<
:
最左侧位不要了
,
最右侧补
0。
2.
右移
>>
:
最右侧位不要了
,
最左侧补符号位
(
正数补
0,
负数补1)。
3.
无符号右移
>>>:
最右侧位不要了
,
最左侧补
0.(c语言没有,java有)
注意
:
1. 左移 1 位 , 相当于原数字 * 2. 左移 N 位 , 相当于原数字 * 2 的 N 次方 .2. 右移 1 位 , 相当于原数字 / 2. 右移 N 位 , 相当于原数字 / 2 的 N 次方 .3. 由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 的 N 次方的时候可以用移位运算代替 .
8. 条件运算符 表达式1 ? 表达式2 : 表达式3
条件运算符只有一个
:
表达式
1 ?
表达式
2 :
表达式
3
当
表达式
1
的值为
true
时
,
整个表达式的值为
表达式
2
的值
;
当
表达式
1
的值为
false
时
,
整个表达式的值为
表达式
3
的值
.
也是
Java
中唯一的一个
三目运算符
,
是条件判断语句的简化写法
6.题目
boolean a=true==true?false?true:false:true; System.out.println(a);
答案:
解析:
以上为我个人的小分享,如有问题,欢迎讨论!!!