java运算符分三种 逻辑运算符 算数运算符 位运算符
一、算数运算符有如下
+ 加 - 减 * 乘 / 除 % 取余数(模) ++ 自增 -- 自减
单独说一下 自增 ++ 自减也一样 E++ 相当于 E= E+1;
E++ 先计算在赋值要在E++语句结束之后才会自增1, ++E 先赋值在计算程序读到此处的时候E已经自增1;
例如:int E = 1; E = E++ + E++; 和 E = E++ + ++E ;这里两个例子
int E = 1 ; E = E++ (此时E++ 还是1)+(此时E经过前面++之后已经为2) E++(此时E++还是为2); 所以计算结果 E的值为 E = 1+2; 就是3
int E = 1; E = E++ (此时E++ 还是1)+(此时E经过前面++之后已经为2)++E(此时++E的值就为3); 所以计算结果 E的值为 E = 1+ 3;就是4
二、逻辑运算符有如下
< 小于 > 大于 <= 小于等于 >= 大于等于 == 等于 != 不等 &, && 并且(and) |, || 或者(or) ! 非(not)
&,&& 运算规则 1&0 = 0 ;1&1 = 1;0&0 = 0;要两边同时为真才为真 二进制中 1表示真 0 表示假
|,|| 运算规则 1|0 = 1;1|1 = 1;0|0 =0;只要一边为真则为真
单独说一下 &,&& 与 |,|| 也同理
& 与 &&的区别在于后者是短路运算 就是 当前面一个条件已经能够确定结果的时候,后面的条件就不会参与运算
例如:int x = 1;int y =1;
if(x++ ==2 && y++ =1){....}
此例子前一个判断x++ 的值为1 不等于2 已经为false 由于是&& 已经能判断结果为false
则后面的条件语句 y++ =1 就不会在参与运算 所以此语句结束时 x的值为2 ,y 的值为1
三、位运算符有如下
& 与 | 或 ^ 异或 >>右移 << 左移 >>>无符号右移
5>>2 表示5的二进制向左移动两位 地位用0 补
0000 0101 左移2位就是 0001 0100 结果为 20
位运算符为运算符其实就是二进制的逻辑运算
例如 5 & 3 要先把 5 和 3 转化成二进制
0000 0101 5的二进制表现形式
0000 0011 3的二进制表现形式
&---------------------根据前面说过的 &的逻辑运算规则结果如下
0000 0001 转化成10进制的结果就为 1
^ 的运算规则为 1 ^ 0 = 1; 1^1 = 0; 0^0 = 0; 只有相对应的一对二进制数不同是 结果为 1
例如
0000 0101 5的二进制表现形式
0000 0011 3的二进制表现形式
^ --------------------
0000 0110 结果为6