目录
一,算术运算符
1.基本四则运算符+ - * /
2.增量运算符 += -= *= %=
3.自增/自减运算符 ++ --
二,6个关系运算符 == != < > <= >=
三,逻辑运算符 && || !
四,位运算符 & ^
五,移位运算 << >> >>>
六,条件运算符(表达式1?表达式2:表达式3 )
七,运算符的优先级
一,算术运算符
1.基本四则运算符+ - * /
%:求余数
-:减
*:乘
/:除
【注意】
1.都是二元运算符,使用时必须要有左右两个操作数,答案会向大的方向提升
2.int / int 结果还是int类型,而且会向下取整 3.除数(分母)不能为0,会报错 算数异常 ArithmeticException Creat breakpoint:/by zero 4.double 类型也可以取余数%,结果为double类型(11.5%2.0==1.5)
求余注意
10%3//1 10%-3//1 -10%3//-1 -10%-3//-1
2.增量运算符 += -= *= %=
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
System.out.println(a); // 输出2
a %= 3; // 相当于 a = a % 2
System.out.println(a); // 输出2
【注意】
1.只有变量才使用
3.自增/自减运算符 ++ --
++是给变量的值+1,--是给变量的值-1
int a = 1; a++; // 后置++ 表示给a的值加1,此时a的值为2 System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2 System.out.println(a); // 输出3 ++a; // 前置++ 表示给a的值加1 System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5 System.out.println(a); // 输出5 // --操作符给操作-1,与++含义类似
【注意】
1.如果单独使用,【前置++】和【后置++】没有任何区别
2.如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式结束时给变量+1
3.只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改
二,6个关系运算符 == != < > <= >=
计算结果是 true 或者 false
int a = 10; int b = 20; // 注意:在Java中 = 表示赋值,要与数学中的含义区分 // 在Java中 == 表示相等 System.out.println(a == b); // false System.out.println(a != b); // true System.out.println(a < b); // true System.out.println(a > b); // false System.out.println(a <= b); // true System.out.println(a >= b); // false
【注意】
1.当需要多次判断时,不能连着写,比如:3 < a < 5
三,逻辑运算符 && || !
1.&& 逻辑与
布尔表达式1&&布尔表达式2 都为真时才为真
当表达式1为假时,表达式2便不再执行
2.|| 逻辑或
布尔表达式1||布尔表达式2 其一为真便为真
当表达式1为真时,表达式2便不再执行
3.!逻辑非
int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
四,位运算符 & ^
都要先转换成二进制
1.& 按位与: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
0 0 0 0 1 0 1 0
0 0 0 1 0 1 0 0
0 0 0 0 0 0 0 0
2.^ 按位亦或 :如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.
0 0 0 0 1 0 1 0
0 0 0 1 0 1 0 0
0 0 0 1 1 1 1 0
【注意】如果两个数相同,则异或的结果为0
3.| 按位或 : 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
0 0 0 0 1 0 1 0
0 0 0 1 0 1 0 0
0 0 0 1 1 1 1 0
【注意】 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.
4.~ 按位取反 :如果该位为 0 则转为 1, 如果该位为 1 则转为 0
0 0 0 0 1 0 1 0
1 1 1 1 0 1 0 1
【注意】
1. 0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4个二进制位.
2. 0xf 表示 10 进制的 15, 也就是二进制的 1111
3. printf 能够格式化输出内容, %x 表示按照十六进制输出.
五,移位运算 << >> >>>
1. << 左移(相当于*2)
11<<1
0000 1011 往前移动一位
0001 0110 ——22
2.>> 右移(相当于/2)
11>>1
0000 1011往后移动一位
0000 0101——5
3.>>>无符号右移(删除最右侧,不管符号位是1 ,0,最左侧统统补0)
-1:1111 1111 >>> 0111 1111
【注意】没有无符号左移,因为左边没有符号位
六,条件运算符(表达式1?表达式2:表达式3 )
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
boolean fla=false?false:true==true?true:false // true==true // true
七,运算符的优先级
加个括号能累死????



