提示:如果你有足够的精力,请记住运算符的优先级!
1. 算术运算符 + - * / %(求余/求模运算符) ++ -- ++ -- 稍微有点麻烦,有个好办法:自己写个Demo测试一下,就可以搞定! 2. 关系运算符 > < == != >= <= 3. 逻辑运算符 & | ^ ! && || <1> & | ^ 既可以对逻辑表达时进行操作,也可以对一般数据类型进行操作 int a = 1;//0x0001 int b = 2;//0x0002 System.out.println("对一般数据类型进行操作"); System.out.println(a&b);//0,按位求余 System.out.println(a^b);//3,按位异或 System.out.println(a|b);//3,按位求或 System.out.println("对逻辑表达时进行操作"); System.out.println(a == 1 & b == 2);//true System.out.println(a == 1 | b == 2);//true /*两者不一致时才为真*/ System.out.println(a == 1 ^ b == 2);//true+true = false System.out.println(a == 12 ^ b == 2);//false+true = true //false+true = true System.out.println(a == 1 ^ b == 22); //true+true = false System.out.println(a == 12 ^ b == 22);
<2> && || ! 只可以对逻辑表达时进行操作,不可以对一般数据类型进行操作 //均会报错 System.out.println(a&&b); System.out.println(a||b); System.out.println(!a);
<3> 区别
&:普通与 &&:短路与|:普通或 ||:短路或
@1. 当在(a && b)条件下,当a为false时,不用再判断b了,表达式已经为false; @2. 当在(a || b)条件下,当a为true时,不用再判断b了,表达式已经为true; @3. 而 & 和 | 则需要两边都进行判断 才行 ! 4. 位运算符 & | ^ ~ >> << >>> & | ^ ~ 按位取与、取或、异或、取反 >> 位右移,高位是1,右移n位就在左边补n个1;高位是0,右移n位就在左边补n个0 >>> 无符号位右移,不管高位是1还是0,均在左边补0 << 位左移,右边补0 5. 赋值运算符 = 6. 扩展运算符,即复合运算符 += -= *= /= %= 等等 int a = 7; //报错:可能损失精度,因为int遇见float会先自动转换为float再与 //2.6相运算,但是计算结果是float不能自动转换为int故报错 a = a + 2.6 //使用复合运算符,就相当于强制转换 a += 2.6; <=> a = (int)(a + 2.6); = 9//强制转化会损失精度 --> 省去小数点 所以,a += 2.6; //不与 a = a + 2.6等效 7. 字符串连接符 + 在使用System.out.println语句打印时,会默认调用toString()方法,所以只要字符串连接符+两边的操作数有一个是字符串, 系统就会自动的将另一个操作数转换为string,然后再打印输出。int a = 1; int b = 2; System.out.println("a+b= " + a + b);//a+b= 12 System.out.println("a+b= " + (a + b));//a+b= 3,括号的优先 //级最大,所以先计算a + b的值然后再将其转换为string输出。 以下类推。 System.out.println("------------------------------"); int i = 12; char ch = 24; System.out.println("i+ch = " + i + ch);//i+ch = 12一个字 //符(24对应的字符) System.out.println("i+ch = " + (i + ch));//i+ch = 36