Java运算符
1、算数运算符:
加(+) 、减(-)、乘(*)、除(/)、取余(%)
自加(++)、自减(--)
2、关系运算符
java关系运算符用于判断数据之间的大小关系
>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)
关系表达式的值为boolean类型(“true”或“false”)
3、逻辑运算符
逻辑运算的操作均为boolean表达式,结果true or false。
逻辑运算符中的每一个表达式的结果必须是true or false。
Java提供如下逻辑运算符:
& : 长路与运算 ,&两边都是整数时,是位与运算符;两边是关系运算时,是逻辑运算。长路与运算会把两边的关系运算结果都计算出来。
&& : 短路与运算,当运算符左边的关系结果是false时,不再对右边的关系运算进行计算。
或运算:当两个关系运算的结果有一个是true时,运算的结果是true,否则是false
| :长路或运算,长路或运算在两边都是整数时,是逐位或运算;在两边是关系运算时,是逻辑运算;长路或运算会将两边的运算结果都计算出来。
|| :短路或运算,当运行符号左边的关系运算结果是true时,不再进行右边的关系运算,直接得出true的结果。
! : (非) 将关系运算结果取反。
三种逻辑运算的优先级:
非运算最高;
其次是与运算;
优先级最低的是或运算;
4、条件运算符
条件运算符又称为“三目”运算,其结构为:
boolean表达式1 ? 表达式2 : 表达式3
如果表达式1 为true结果就是表达式2的结果
如果表达式1为false结果就是表达式3的结果
5、赋值运算符
“=”称为赋值运算符,用于对变量赋值。
赋值表达式本身也有值,其本身之值即为所赋之值。
可以使用扩展赋值表达式(+=、-=、/=、*=、%=)。
eg : int b = 20;
b += 5.5;(对的)
// b = b+5.5;错误===>b = (int)(b+5.5);
6、字符串连接运算符
“+” 可以实现字符串的连接。同时可以实现字符串与其他数据类型的“项连”。
eg : System.out.println(1+2+3+”hello”) 输出6hello
eg : System.out.println(”hello”+1+2+3) 输出 hello123
7、位运算操作符(效率高,都是直接二进制运算)
(1)右移操作
>> 有符号 正数补0 负数补1
>>>无符号 正数补0 负数补0
正数:转换成二进制,往后挪动2位前面补0,最后两位抹去
右移动一位相当于除以2
eg : int a = 10; a>>2; 得到2
负数:前面补位,补1 后面抹去
eg :int b = -10; b>>2;
/*
推理过程
a.先得到-10的二进制
10的二进制 28个0 1010
取反 28个1 0101——>+1
-10的二进制 28个1 0110
b.移动
右移动两位 11 28个1 01 这个就是最终的负数
c.计算最后结果
负数取反+1得到对应的正数
00 28个0 10 +1====>得到对应正数 00 28个0 11
正数是3对应的负数时-3
*/
无符号右移动专门针对负数,正数前面补0,负数在前面也是补0
eg: b>>>2;
(2)左移操作
<< 后面补0(不管正负数),左移动一位相当于乘以2
(3) & (位与)、|(位或)、 ^(异或)
-
-
- 操作数1 & 操作数2
-
eg: int c = 5,d = 4; c & d;(把两个数字都转换成二进制,然后一位一位运算,都是1这一位就为1否则为0,得到的二进制再转换成十进制即可)
-
-
- 操作数1 | 操作数2
-
eg: int c = 5,d = 4; c | d;(把两个数字都转换成二进制,然后一位一位运算,都是0这一位就01否则为1,得到的二进制再转换成十进制即可)
-
-
- 操作数1 ^ 操作数2
-
eg: int c = 5,d = 4; c ^ d;(把两个数字都转换成二进制,然后一位一位运算,相同为0不相同为1,得到的二进制再转换成十进制即可)
// c = a ^ b; 那么 b 等于c^a ; a等于 c^b 的结果;