1、算术运算符
运算符 | 含义 | 表达式 |
+ | 加 | 1+1 |
- | 减 | 1-1 |
* | 乘 | 1*2 |
/ | 除 | 2/1 |
% | 取余 | 5%2 |
2、赋值运算符
即= 表示将右边的值赋给左边的变量
即
int i ;
i= 1;
运算符 | 含义 | 表达式 |
+= | x = x+y | x+=y |
-= | x = x-y | x - =y |
*= | x = x*y | x*=y |
/= | x = x/y | x /=y |
%= | x = x%y | x %=y |
代码示例
public class Main {public static void main(String[] args) {int x,y;x=9;y=10;System.out.println("'x+=y' ="+ (x+=y));} }
代码结果如下:
3、关系运算符
运算符 | 含义 | 表达式 | 运算结果 |
> | 大于 | 5>3 | true |
< | 小于 | 'f'<'a' | true |
>= | 大于或等于 | 5.6>=3.2 | true |
<= | 小于或等于 | 'A'>=65 | true |
== | 等于 | ‘A’==65 | true |
!= | 不等于 | ‘A’ !=65 | false |
运算结果是boolean型,一般运用在循环语句中的循环条件
4、逻辑运算符
运算符 | 含义 | 表达式 | 运算结果 |
&& | 与,并且 | 5>3&&2>1 | true |
|| | 或者 | 5>3||2>1 | false |
! | 非 | !true | false |
&&
与,其实就是表示当他链接的两个值都为真时为真,其他时候都是假
||
或,两者中有一为真则为真,在java中常用 a>90||a<50,表示找一个大于90或者小于50的值
!
非就是反
5、位运算符
运算符 | 含义 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 左移位 |
>> | 右移位 |
>>> | 无符号右移位 |
1、&
直接来观察代码
public class Main {public static void main(String[] args) {int x,y;x=9;y=10;System.out.println("'x&y' ="+ (x&y));} }
既然是按位与也就是将数字转换为二进制数在此代码中也就是
9 =1001 10 = 1010在&运算之后就是1000 也就是8
查看代码结果
2、|按位或
也是一样直接看代码(我并不会将代码更改大部分,这里只是想要去理解如何算,而不是去大量计算)
public class Main {public static void main(String[] args) {int x,y;x=9;y=10;System.out.println("'x|y' ="+ (x|y));} }
已知:1001 ,1010则结果为11(1|0 = 1 ,0|1 = 1, 1|1 = 1 ,0|0 =0)
查看代码结果
3、按位或^
这里的^ 跟前面的||很像但是是按位运算(1|1 = 0,0|0 = 0 ,1|0 = 1, 0|1 = 1)
public class Main {public static void main(String[] args) {int x,y;x=9;y=10;System.out.println("'x^y' ="+ (x^y));} }
结果如下:
4、按位取反~
public class Main {public static void main(String[] args) {int y;//x=9;x,y=10;System.out.println("'~y' ="+ (~y));} }
结果如下:
5、右移位,左移位,无符号右移位
代码示例如下
public class Main {public static void main(String[] args) {int y;//x=9;x,y=10;System.out.println("'y<<1' ="+ (y<<1));System.out.println("'y>>1' = "+ (y>>1));System.out.println("'y>>>1' = " + (y>>>1));} }
无符号和正常右移位的唯一不同是不考虑原数的正负
代码结果如下:
6、三元运算符
三元运算符就是?
语法如下:
逻辑表达式 ? 表达式1 : 表达式2
代码示例如下:
public class Main {public static void main(String[] args) {int x,y,i;x=9;y=10;i =x>y?++x:++y;System.out.println(y);System.out.println(x);System.out.println(i);} }
结果如下:
为啥呢,因为这里的x>y为false所以会实现y++ 所以会出现y = y+1 所以等于11
所以 i =11
7、自增自减运算符
而自增自减其实就是 ++y 其实就是y = y+1 而且是先加后用 也就是输出是y +1 而不是y 。y++ 是先输出y后变为y+1
代码示例如下
public class Main {public static void main(String[] args) {int x,y,i;x=9;y=10;System.out.println(x++);System.out.println(++y);} }
结果如下:
也从侧面证明了 y ++是先用后加 ,++y是先加后用
8、运算符的优先级
运算符的越高越优先执行
下面是顺序
运算符 | 优先级 | 描述 | 结合性 |
[]().,; | 1 | 分隔符 | 无 |
++ -- ! | 2 | 自增,自减,逻辑非 | 从右到左 |
* / % | 3 | 算术乘除取余运算 | 从左到右 |
+ - | 4 | 算术加减 | 从左到右 |
>> << >>> | 5 | 移位运算 | 从左到右 |
< <= > >= | 6 | 大小关系运算 | 从左到右 |
== != | 7 | 相等关系运算 | 从左到右 |
& | 8 | 按位与运算 | 从左到右 |
^ | 9 | 按位异或运算 | 从左到右 |
| | 10 | 按位或运算 | 从左到右 |
&& | 11 | 逻辑与运算 | 从左到右 |
|| | 12 | 逻辑或运算 | 从左到右 |
?: | 13 | 三元运算 | 从左到右 |
= | 14 | 赋值运算 | 从右到左 |
其实优先级不需要怎样去牢记,只是要在解决问题去解决正常情况下都可以使用()来解决问题因为这样才是最符合逻辑的