一、算术运算符
加 减 乘 除 取余 自增 自减(+ - * / % ++ --)
前缀自增自减 ++a, --a 先进行自增或者自减运算,再进行表达式运算。
后缀自增自减 a++, a--先进行表达式运算,再进行自增或者自减运算。
public class AddSub {
public static void main(String [] args){
int i =5, j = 8;
int a = i++; // a=i=5 ; i= i+1. 结果为 a=5; i=6
int b = --j; // j =j-1; b=j=6. 结果为 b=7; j=7
System.out.println("a:" + a + " , b:" +b);
System.out.println("i:" + i + " , j:" +j);
/*结果:
a:5 , b:7
i:6 , j:7
*/
}
}
二、关系运算符
大于 小于 大于等于 小于等于 恒等于 非等于 (> < >= <= == !=)
三、位运算符
int i =5, j = 8; // 二进制 i = 0101 ; j = 1000
System.out.println(i & j); // 同位都为 1 则 1, 否为0 . 结果:0000 -> 0
System.out.println(i | j); // 同位都为 0 则 0, 否为1 . 结果:1101 -> 8+4+1=13
System.out.println(i ^ j); // 同位相同 则 0, 否为1 . 结果:1101 -> 8+4+1=13
System.out.println( ~ i); // 按位取反,0变为1, 1变0 . 结果:-1010 -> -8-(-2)=-6 (默认为+ 取反为-)
System.out.println(i >>2); // 按位右移 2 位 结果:0001 -> 1
System.out.println(i <<2); // 按位左移 2 位 结果:0001 0100 -> 16+4=20
实例
用最有效的方法算出2的3次方的结果
// 左移多少位就相当于乘以2的多少次方, 右移则是除以2的多少次方
System.out.println(1<<3); // 相当于 1*2^3 = 8
System.out.println(2<<3); // 相当于 2*2^3 = 16
System.out.println(5<<1); // 相当于 5*2^1 = 10
System.out.println(89>>1); // 相当于 89/2^1 = 44 (向下取整)
System.out.println(-3>>1); // 相当于 -3/2^1 = -2
System.out.println(-3>>3); // 相当于 -3/2^3 = -1
四、赋值运算符
基本是算术运算符、位运算符与等于号的组合。-= += *= /= ......
五、条件运算符
也称三目运算符(?:)
语法格式:variable x = (expression) ? value if true : value if false
六、instanceof 运算符
用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
语法格式:( Object reference variable ) instanceof (class/interface type)
七、逻辑运算符
短路与,短路或 && ||
a && b 当a和b同时都为真时,则结果为真。(只要a不满足条件,则不判断b)
a || b 当a或b有一为真时,则结果为真。(只要a满足条件,则不判断b)
扩充: a & b 或 a | b 会对所有条件都进行判断