运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

比较(关系)运算符,逻辑运算符 ,位运算符,三元(三目)运算符

1)比较(关系)运算符

,<,>=,<=, ==(使用居多)
运算符连接的表达式无论是简单还是复杂,结果最终都是boolean类型
举例:

int a = 10 ;int b = 20 ; boolean result = (a==b) ; //a ≠ b System.out.println("输出结果为:"+result);//输出结果为:false

2)逻辑运算符(开发中使用)
基本逻辑符号
逻辑单与&
逻辑单或|
逻辑异或^
逻辑非!
扩展的(重点)
逻辑双与&&
逻辑双或||
举例:

//定义三个变量int a = 3 ;int b = 4 ;int c = 5 ;//逻辑单与&System.out.println((a>c)&(b>c)) ;//false & false -->falseSystem.out.println((a>c)&(b<c)) ;//false & true -->falseSystem.out.println((a<c)&(b>c)) ;//true & false -->falseSystem.out.println((a<c)&(b<c)) ;//true & true -->trueSystem.out.println("结论:并列关系,有false,则false") ;//逻辑单或|System.out.println((a>c)|(b>c)) ;//false | false -->falseSystem.out.println((a>c)|(b<c)) ;//false | true -->trueSystem.out.println((a<c)|(b>c)) ;//true | false -->trueSystem.out.println((a<c)|(b<c)) ;//true | true -->trueSystem.out.println("结论:或的关系,有true,则true (有一个满足条件,则成立)") ;//逻辑异或^System.out.println((a>c)^(b>c)) ;//false ^ false -->falseSystem.out.println((a>c)^(b<c)) ;//false ^ true -->trueSystem.out.println((a<c)^(b>c)) ;//true ^ false -->trueSystem.out.println((a<c)^(b<c)) ;//true ^ true -->falseSystem.out.println("结论:相同则为false,不同则为true") ;//逻辑非System.out.println(!(a>c)) ; //trueSystem.out.println(!!(a>c)) ; //falseSystem.out.println(!!!(a>c)) ; //trueSystem.out.println(!!!!(a>c)) ; //falseSystem.out.println("结论:非true则false,非false,则true,偶数个非是它本身!") ;//使用逻辑双与来链接这些表达式System.out.println((a>c) &&(b>c)) ;//false & false -->falseSystem.out.println((a>c) &&(b<c)) ;//false & true -->falseSystem.out.println((a<c) &&(b>c)) ;//true & false -->falseSystem.out.println((a<c) &&(b<c)) ;//true & true -->trueSystem.out.println("结论与逻辑单与&相同") ;//逻辑单或|System.out.println((a>c)||(b>c)) ;//false || false -->falseSystem.out.println((a>c)||(b<c)) ;//false || true -->trueSystem.out.println((a<c)||(b>c)) ;//true || false -->trueSystem.out.println((a<c)||(b<c)) ;//true || true -->trueSystem.out.println("结论与逻辑单或|相同") ;//定义两个变量int x = 3 ;int y = 4 ;//boolean flag = ((++x == 3) & (--y ==4)) ; //true && true -->true//boolean flag = ((x++ == 3) & (y-- ==4)) ; //true && true -->true//boolean flag = ((x++ == 3) & (++y ==4)) ; //true && true -->true//boolean flag = ((x++==3 ) && (y-- ==4) ); //true && true -->trueboolean flag = ((++x==3 ) && (y-- ==4) ); //false 右边不执行System.out.println("结论:当符号为&& ,左边的表达式位false,右边不执行(短路效果)") ;int m = 4 ;int n = 5 ;//boolean flag2 = ((m++ == 4) | (--n == 5)) ; // true | false//boolean flag2 = ((++m == 4) || (--n == 5)) ;//false || falseboolean flag2 = ((m++ == 4) || (--n == 5)) ;//trueSystem.out.println("结论:当符号为|| ,左边表达式为true,右边不执行(短路效果)") ;

3)位运算符:(了解)
位与&,位或|,位异或^, ~数据(反码)
<<(左移动),>> 右移,>>> 无符号右移 (了解)
举例:

位运算符: 位与& 位或| 位异或^ ~数据(反码) 位与& 有0则0 3&4 00000000 00000000 00000000 00000011& 00000000 00000000 00000000 00000100------------------------------------------- 00000000 00000000 00000000 00000000 结果:0 结论:位与运算符的特点:有0,则0 位或| 有1则1 3|4 00000000 00000000 00000000 00000011| 00000000 00000000 00000000 00000100------------------------------------------ 00000000 00000000 00000000 00000111 结果为:7 位或|运算符的特点:有1,则1 位异或^ 相同则0 不同则1 3^4 00000000 00000000 00000000 00000011^ 00000000 00000000 00000000 00000100------------------------------------------ 00000000 00000000 00000000 00000111 结果为:7 位异或^运算符的特点:相同则为0,不同则为1反码5 求反码(对当前数据的二进制数据全部按位取反,0变1,1变0) ~5 00000000 00000000 00000000 0000101(原码,反码,补码) 11111111 11111111 11111111 1111010(全部按位取反)(这是补码) 11111111 11111111 11111111 1111001(反码) 10000000 00000000 00000000 0000110(原码) 结果为:-6反码-3 ~-3 10000000 00000000 00000000 000000011(原码) 11111111 11111111 11111111 111111100(反码) 11111111 11111111 11111111 111111101(补码) 00000000 00000000 00000000 000000010(全部取反) 结果为:2 结论:求反码(对当前数据的二进制数据全部按位取反,0变1,1变0) 左移: << 3<<3 00000000 00000000 00000000 00000011 00000000 00000000 00000000 00011000(左移三位) 16+8=24 ------------------------------------------------ -3<<3 10000000 00000000 00000000 00000011 11111111 11111111 11111111 11111100(反码) 11111111 11111111 11111111 11111101(补码) 11111111 11111111 11111111 11101000(左移三位)(补码) 11111111 11111111 11111111 11100111(反码) 10000000 00000000 00000000 00011000(原码) 结果: -24右移: >> 3>>3 00000000 00000000 00000000 00000011 00000000 00000000 00000000 00000000(右移三位)无符号右移>>> 20>>>2 00000000 00000000 00000000 00010100 00000000 00000000 00000000 00000101(无符号右移两位,最高位都补0) 结果: 5

4)三元(三目)运算符:

固定格式:(表达式)?(表达式1):(表达式2)执行流程: 判断表达式的结果, 结果为true->执行表达式1的结果, 结果为false->执行表达式2的结果。

int a = 10;int b = 20;boolean res = (a>b)?true:false;//结果是:false;