一.算数运算符 + - * / %
??? ? ?注意:? ? ? ??
? ? ? ? ? ? ? ?(1) 0 不能作为除数 ? ? ? ? ? ? ? ?(2) % 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模 ? ? ? ? ? ? ? ?(3)? 其他规则都比较简单,这里就不详细讨论了
二.自增/自减 ++ --
int a = 10;
int b = ++a; //先++ 后赋值
System.out.println(b);
int c = a++; //先赋值 后++
System.out.println(c);
????????注意 和 C的区别:
? ?此处输出结果为10,并不会输出十一,具体原因可以参照java反汇编进行研究,这里就不具体研究了? ??
三.结合赋值运算? ?+=? ?-=? ?*=? ?/=? ?%=
四.逻辑运算符? ?&&? ||? !
? ? ? ? 总结:
? ? ? ? ? ? ? ? ? ? ? ? 1.&& 和 || 运算和C一样,采用"短路"的方式求值? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.注意: 逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.特别注意: 不能对非boolean 类型进行 ! 运算
int a=10;
System.out,println(!a); //编译无法通过
//但是 在C语言 打印 !a 可以打印出 0,因为C语言并没有Boolean类型
五.位运算? ? & | ^? ~
? ? ? ??按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0. ????????按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1. ????????按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1. ????????按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
? ? ? ? 注意:
????????????????当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数boolean 的候,表示逻辑运算.但是和 && 以及 || 相比, 它们不支持短路求值.
六.移位运算? <<? ? ? >>? ? ? ?>>>
????????左移 <<: 最左侧位不要了, 最右侧补 0. ????????右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1) ? ? ? ??无符号右移 >>>: 最右侧位不要了, 最左侧补 0.
七.条件运算? ? ?? :
表达式1 ? 表达式2 : 表达式3 ????????当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表式的值为 表达式3 的值
flag?1:0 //实现Boolean类型和int类型的转换
|