算术运算符
总体原则是先乘除、再加减,括号优先
/
整型数据和变量之间进行除法运算时,无论能否整除,运算结果都是整数,会将小数部分直接截去
(没有四舍五入)。 除法运算中,包含浮点型数据,最后结果为小数形式。 支持正负数除法运算
%
支持浮点型数据取余 支持正负数取余运算
关于含0的算术运算:
0可做被除数。 当0做除数时,若被除数是整数,则会报错。
关于小数算术运算:
如果算术表达式中含有double型数据或变量,则运算结果为double型,否
运算结果为float型。(P34页PPT取大原则) 计算结果有时候会包含小数位,这些小数有时候并
准确,会与数学计算的结果存在误差,只能尽力接近数学运算中的结果。
自增自减
前缀++和前缀--: ++i和--i,先进行i+1或i-1,再使用i。 如:int j, i=4; j=++i;//i=i+1;j=i; 结果为:i=5;j=5
后缀++和后缀--: i++和i--,先使用i,再进行i+1或i-1。 如:int j, i=4; j=i++;//j=i;i=i+1; 结果为:i=5;j=4
关系运算符
关系运算符用来比较两个值,包括 >、 >= 、< 、<= 、== (等于) 、 != (不等于)
逻辑运算符
且、或、非(!)。且与或为二元运算符,逻辑非(!)为一元运算符。
Java对逻辑且和逻辑或提供短路和不短路的操作功能。 短路:进行计算时,先计算运算符左侧表达式的值,若使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。
逻辑运算符 | 短路 | 不短路 | 示例 | 实际运算 | 结果数据类型 |
且 | && | & | 5<3&&4>3 | 5<3为假则后续表达式4>3跳过不运算 | Boolean |
或 | || | | | 5>3||4<3 | 5>3为真则后续表达式4<3跳过不运算 | Boolean |
位运算符
位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)、无符号右移(>>>)。操作时均转换为二进制补码(正数补码与原码一致,负数补码=负数反码+1)
按位与运算(&)
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
即:0&0=00&1=0,1&0=0,1&1=1 计算5&7,转换为二进制:即101 & 111=101 (十进制5)
按位或运算(|)
参与运算的两个值,如果两个相应位都为0,则该位结果为0,否则为1。
即:0|0=00|1=1,1|0=1,1|1=1
赋值运算符
按位异或运算(^)
参与运算的两个值,如果两个相应位相同,输出位为0,否则为1。
即:0^0=0,0^1=1,1^0=1,1^1=0 按位取反运算(~)
按位取反运算(~)
属于一元运算符,它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位取反生
与输入位的相反的值——若输入0,则输出1;输入1,则输出0。
即:~0=1,~1=0
左移位运算符(<<)
运算符<<执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。
右移位运算符(>>)
运算符>>执行一个右移位(带符号),左边按符号位补0或1
无符号右移位运算符(>>>)
”>>>“运算符只用于整型,且只对int值或long值起作用,若用于short或byte值,则在进行“>>>”前
用符号扩展将其扩展为int型,然后再移位。运算符>>>执行一个右移位(无符号),只用0来填
左侧的空位。
正数: r = 20 >>> 2的结果与 r = 20 >> 2 相同;
负数: r = -20 >>> 2
源码:10000000 00000000 00000000 00010100
反码:11111111 11111111 11111111 11101011
补码:11111111 11111111 11111111 11101100
补码右移:00111111 11111111 11111111 11111011
结果:r = 1073741819
三目运算符
赋值运算符包括普通赋值运算符和扩展赋值运算符。
普通赋值运算符“=”的作用是将运算符右边表达式的值赋给左边的变量。
赋值运算符的结合性:自右向左。
扩展赋值运算符的作用是先进行某种运算后,再对运算的结果进行赋值操作。
运算符优先级
大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运
算符、赋值运算符。 基本的优先级需要记住: 指针最优,单目运算优于双目运算。
优先级 | 运算符 | 结合律 | |
---|---|---|---|
1 | 后缀运算符:[] () · -> ++ --(类型名称){列表} | 从左到右 | |
2 | 一元运算符:++ -- ! ~ + - * & sizeof_Alignof | 从右到左 | |
3 | 类型转换运算符:(类型名称) | 从右到左 | |
4 | 乘除法运算符:* / % | 从左到右 | |
5 | 加减法运算符:+ - | 从左到右 | |
6 | 移位运算符:<< >> | 从左到右 | |
7 | 关系运算符:<<= >>= | 从左到右 | |
8 | 相等运算符:== != | 从左到右 | |
9 | 位运算符 AND:& | 从左到右 | |
10 | 位运算符 XOR:^ | 从左到右 | |
11 | 位运算符 OR:| | 从左到右 | |
12 | 逻辑运算符 AND:&& | 从左到右 | |
13 | 逻辑运算符 OR:|| | 从左到右 | |
14 | 条件运算符:?: | 从右到左 | |
15 | 赋值运算符: = += -= *= /= %= &= ^= |= <<= >>= | 从右到左 | |
16 | 逗号运算符:, | 从左到右 |