基本运算符
算术运算符:+, -, *, /, %, ++, --
赋值运算符:=
关系运算符:>, <, >=, <=, ==, !=, instanceof
逻辑运算符:&&, ||, !
位运算符:&, |, ^, ~, >>, <<, >>> (了解)
条件运算符:?, :
扩展赋值运算符:+=, -=, *=, /=
算术运算符
//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
//30
System.out.println(a-b);
//-10
System.out.println(a*b);
//200
System.out.println(a/(double)b);
//0.5
System.out.println(c%a);// 21 / 10 = 2 ... 1
//1
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;
//执行完这行代码后,先给b赋值,再自增
//b = a;
//a = a + 1;
System.out.println(a);
//4
int c = ++a;//执行完这行代码前,先自增,再给c赋值
//a = a + 1;
//c = a;
System.out.println(a);
//5
System.out.println(b);
//3
System.out.println(c);
//5
//幂运算 2^3 2*2*2 = 8
double pow = Math.pow(2,3);
System.out.println(pow);
//8
long a =123123123123123L;
int b =123;
short c =10;
byte d =8;
System.out.println(a+b+c+d);
//123123123123264,Long
System.out.println(b+c+d);
//141,int
System.out.println(c+d);
//18,int
//System.out.println((String)(c+d));
//Inconvertible types; cannot cast 'int' to 'java.lang.String'
关系运算符
//关系运算符返回的结果:正确,错误(通过布尔值表示)
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b);
//false
System.out.println(a<b);
//true
System.out.println(a==b);
//false
System.out.println(a!=b);
//true
逻辑运算符
//逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+(a&&b));
//逻辑与运算:全真为真,有假即假
//false
System.out.println("a || b: "+(a||b));
//逻辑或运算:有真即真,全假为假
//false
System.out.println("! (a && b): "+!(a&&b));
//逻辑非运算:真变假,假变真
//true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
//false
System.out.println(c);
//c++<4未执行
//5
位运算符
/*
A = 0011 1100
B = 0000 1101
------------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
2*8 = 16 2*2*2*2
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
*/
System.out.println(2<<3);
//16
扩展赋值运算符
int a = 10;
int b = 20;
a+=b;//a = a + b;
System.out.println(a);
//a=30
a-=b;//a = a - b;
System.out.println(a);
//a=10
//字符串连接符 +
System.out.println(""+a+b);
//1020
System.out.println(a+b+"");
//30
System.out.println(a+b+" "+a+b);
//30 1020
条件运算符
// 三元运算符
// x ? y : z
// 如果x == true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
//if(score < 60)
System.out.println(type);
//及格
运算符优先级
优先级 | 运算符 | 简介 | 结合性 |
---|---|---|---|
1 |
[ ] 、 . 、 ( )
|
方法调用,属性获取 | 从左向右 |
2 |
! 、 ~ 、 ++ 、 --
|
一元运算符 | 从右向左 |
3 |
* 、 / 、 %
|
乘、除、取模(余数) | 从左向右 |
4 |
+ 、 -
|
加减法 | 从左向右 |
5 |
<< 、 >> 、 >>>
|
左位移、右位移、无符号右移 | 从左向右 |
6 |
< 、 <= 、 > 、 >= 、 instanceof
|
小于、小于等于、大于、大于等于,对象类型判断是否属于同类型 | 从左向右 |
7 |
== 、 !=
|
2个值是否相等,2个值是否不等于。 | 从左向右 |
8 | & |
按位与 | 从左向右 |
9 | ^ |
按位异或 | 从左向右 |
10 | | |
按位或 | 从左向右 |
11 | && |
短路与 | 从左向右 |
12 | || |
短路或 | 从左向右 |
13 | ? : |
条件运算符 | 从右向左 |
14 |
= 、 += 、 -= 、 *= 、 /= 、 %= 、 &= 、 |= 、 ^= 、 < 、 <= 、 > 、 >= 、 >>=
|
混合赋值运算符 | 从右向左 |