三、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
3.1、算术运算符
+ - * / % (前)++ (后)++ (前)-- (后)-- +% :取余运算
结果的符号与被模数的符号相同
开发中,经常使用%来判断能否被除尽的情况
3.2、赋值运算符
注意:s2 += 2; 不会改变变量本身的数据类型
short s1, s2;
s1 = s2 =10;
s1 = s1+2;//编译失败
s2 += 2;//不会改变变量本身的数据类型
System.out.println(s2);
3.3、比较运算符
(关系运算符)
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 检查是否是类的对象 | "Hello" instanceof String | true |
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=”。
3.4、逻辑运算符
逻辑运算符只适用于boolean类型的变量。
&:逻辑于
&&:短路于
|:逻辑或
||:短路或
!:逻辑非
^:逻辑异或:两个相等为 false;两个不相等为:true
区分 & && 相同点1:& 与 && 的运算结果相同 相同点2:当符号左边为 true 时,二者会继续执行符号右边的运算 不同点:当符号左边为 false 时,&会继续执行符号右边的运算,&&不再执行右边的运算(被短路)。
区分 | 与 || 相同点1:| 与 || 的运算结果相同 相同点2:当符号左边为 false 时,二者会继续执行符号右边的运算 不同点:当符号左边为 true 时,|会继续执行符号右边的运算,||不再执行右边的运算(被短路)。
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
3.5、位运算符
结论:“左乘右除“
① 位运算符操作的都是整型的数据;
② <<在一定范围内,每向左移一位,相当于 *2;
③ >>在一定范围内,每向右移一位,相当于 / 2.
位运算符的细节 | |
---|---|
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 被移除的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
& | 二进制位进行&运算,只有1&1时结果是1,否则是0 |
| | 二进制位进行|运算,只有0|0时结果是0,否则是1 |
^ | 相同二进制位进行^运算,结果是0;1^1=0,0^0=0 .不相同二进制位^运算结果都是1;1^0=1 , 0^1 =1 |
~ | 正数取反,各二进制码按补码各位取反; 负数取反,各二进制码按补码各位取反; |
3.6、三元运算符
1.结构:(条件表达式)?表达式1:表达式2 2.说明
① 条件表达式的结果为 boolean类型;
② 根据条件表达式真或假,决定执行表达式1.还是表达式2. 如果表达式为true,则执行表达式 1; 如果表达式为false,则执行表达式 2;
③ 表达式1 和 表达式2 要求是一致的。
④ 三元运算符可以嵌套使用
⑤ 凡是可以使用三元运算符的地方,都可以改写为if-else, 反之,不成立。
//获取两个整数的较大值
int m = 2;
int n =12;
int max = (m > n) ? m : n;
System.out.println(max);