JavaSE运算符
1.1、算数运算符
*基本四则运算符 + - * / % 值得注意的是除法
1)int/int结果还是int,需要用double来计算
![在这里插入图片描述](https://img-blog.csdnimg.cn/b27236fbd4c44815bf1eddc1f0f1c34d.pn
结果为0;想要得到0.5那就要用double来计算
b)0不能作除数
c)%表示取余(得到的是余数),还可以对double取余
*增量赋值运算符+= -= *= /= %=
a)a -= 1;相当于a = a - 1;其他几个都是一样的用法
b)自增自减运算符 ++ --
a++,++a两个是不一样的
a++是先++,在使用
++a是先使用,后++
结论:
-
如果不取自增运算的表达式的返回值, 则前置自增和后置自增没有区别.
-
如果取表达式的返回值, 则前置自增的返回值是自增之后的值, 后置自增的返回值是自增之前的值
*关系运算符 == != < > <= >=
注意: 关系运算符的表达式返回值都是 boolean 类型*逻辑运算符 && || !
a)逻辑与&&
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false
b)逻辑或 ||
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
c)逻辑非 !
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数d)短路求值
-
对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式
-
对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式
*位运算符
按位与&、按位或|、按位取反~、按位异或^
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算.
当& 和 |运算时,操作数为整数(int ,short ,long,byte)的时候,表示按位运算,当操作数为Boolean 的时候,表示逻辑运算。按位取反~
int a = 10; a 的二进制:1010
b = ~a; b的二进制: 0101
注意: -
0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进
制位. -
0xf 表示 10 进制的 15, 也就是二进制的 1111
-
printf 能够格式化输出内容, %x 表示按照十六进制输出.
-
\n 表示换行符
移位运算符:<< >> >>>都是按二进制位 来运算
1)左移 <<:最左侧不要了,最右边补0;
10 <<1(右移1位) 20 ---------> 相当于102^1
0000 1010 <<1 0001 0100(20) 相当于102^1
0000 1010 <<2 0010 1000(40) 相当于10*2^22)右移 >>:最右侧不要了,最左侧补符号位(正数补0;负数补1)
10 >>1 (左移1位)
0000 1010 <<1 0000 0101 5(二进制) 相当于10/2
原码 反码 补码
1000 1010(-10)(负数的右移需要将-10换算成补码的形式计算,再将补码换算成原码打印)------1111 0101 ------- 1111 0110 (再将补码转换成原码打印(就是求原码到补码的逆过程 ,先减1 ,符号位不变按位取反))-----1111 0101------1000 1010
1000 1010(原码-10) >> 1 1111 0101(反码) 1111 0110(补码)右移1位-------1111 1011(右移1位的补码)-----1111 1010(补码-1)------1000 0101(符号位不变,,按位取反(原码)) -5
无符号右移 >>> :最右侧不要了,最左侧补0
**条件运算符:表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式
3 的值