Java 运算符
1. 算术运算符
-
+, -, *, /, %, ++, - -
-
%:取余,也叫模运算
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
//如果有一个数是long/double,那结果一定是long/double
System.out.println(a+b+c+d); //123123123123264 long
System.out.println(b+c+d); //141 int
System.out.println(c+d); //18 int
- ++ 和 - - :放在变量后面(先赋值,再自增);放在前面(先自增,再赋值)。
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a = a + 1
System.out.println(a); //4
//a = a + 1
int c = ++a; //执行完这行代码前,先给a自增,再给c赋值
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.0
2. 赋值运算符
- =
3. 关系运算符
- >, <, >=, <=, ==, !=, Instanceof
- 返回的结果是布尔值,即false/true。
4. 逻辑运算符
- &&, ||, ! (与、或、非)
- 短路运算
boolean a = true;
boolean b = false;
System.out.println("a && b: " + (a && b)); //逻辑与运算,两个变量都为真,结果才为true
System.out.println("a || b:" + (a || b)); //逻辑或运算,若有一个为真,则结果为true
System.out.println("!(a && b):" + !(a && b)); //逻辑非运算,如果是真,则变为假,反之同理
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(c); //不执行c++<4,因为c<4是false
System.out.println(d);
5. 位运算符
-
&, |, ^, ~, >>, <<, >>>
-
&:相同为1,否则为0;
-
|:有一个是1则为1,否则为0;
-
^ : 取反,相同为0,否则为1
-
① << 左移 : *2
-
② >>右移 :/2
A = 0011 1100
B = 0000 1101 A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001 //取反 相同为0 否则为1
~B = 1111 00100000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0000 1001 9
···
0001 0000 16
/*
2*8 = 16 怎么运算最快 2 * 2 * 2 * 2
效率极高 << 左移 *2 >> 右移 /2
*/
System.out.println(2<<3); //16
6. 条件运算符
- ? : (三元运算符)
- x ? y : z 如果x == true, 则结果为y, 否则为z
- if
7. 扩展赋值运算符
- *+=, -=, =, /=
- 偷懒运算符
int a = 10;
int b = 20;
a += b; // a = a + b
a -= b; // a = a - b
System.out.println(a); //30
//字符串连接符 + , 有一个是String类型,会把另一个也变成String类型
System.out.println("" + a+b); // 1020
System.out.println(a+b+ ""); //30
8. 优先级
- ()