算数运算符
注意一下这个:
运算类型 |
结果 |
a=2,b=++a |
a=3,b=3 |
a=3,b=a++ |
a=3,b=2 |
数字++:先自增1,后运算
++数字:先运算,后自增1
public class Hello {
public static void main(String[] args) {
int a = 2;
int b = ++a;
int c = 5;
int d = c++;
System.out.println(a + " " + b + " " + c + " " + d);
}
}
输出结果:
3 3 6 5
赋值运算符
- 符号:=
- 当”=“两侧数据类型不一样时,用自动数据类型转换或者强制类型转换。
- 支持连续赋值。
比较运算符
== != < > <= >=
主要区分好=和==。
逻辑运算符
&一逻辑与 |一逻辑或
!一逻辑非 &&一短路与
||一短路或 ^一逻辑异或
注意:
区分&和&&
public class LogicTest {
public static void main(String[] args) {
boolean b1 = false;
int num1 = 10;
if (b1 & (num1++ > 0)) {
System.out.println("001");
} else {
System.out.println("002");
}
System.out.println("num1=" + num1);
boolean b2 = false;
int num2 = 10;
if (b1 && (num2++ > 0)) {
System.out.println("001");
} else {
System.out.println("002");
}
System.out.println("num2=" + num2);
}
}
结果:
002
num1=11
002
num2=10
结论:
- 二者计算结果相同
- 当两个都是true时,二者都会执行后面的运算
- &当第一个条件是false仍然会判断后一个条件,&&当第一个条件是false就不再看后面的条件了
区分|和||
public class LogicTest {
public static void main(String[] args) {
boolean b1 = true;
int num3 = 10;
if (b1 | (num3++ > 0)) {
System.out.println("001");
} else {
System.out.println("002");
}
System.out.println("num3=" + num3);
boolean b2 = true;
int num4 = 10;
if (b1 || (num4++ > 0)) {
System.out.println("001");
} else {
System.out.println("002");
}
System.out.println("num4=" + num4);
}
}
运行结果:
001
num3=11
001
num4=10
结论:
- |与||的运算结果相同
- 当符号左边是false时,二者都会执行符号右边的运算
- 当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
位运算符
运算符 |
运算 |
例子 |
含义 |
<< |
左移 |
3 << 2 = 12 |
3 * 2 * 2 = 12 |
>> |
右移 |
3 >> 1 = 1 |
3 / 2 = 1 |
>>> |
无符号右移 |
3 >>> 1 = 1 |
3 / 2 = 1 |
& |
与运算 |
6 & 3 = 2 |
|
| |
或运算 |
6 |3 = 7 |
|
^ |
异或运算 |
6 ^ 3 = 5 |
|
~ |
取反运算 |
~6 = -6 |
|
结论:
三元运算符
(条件表达式)?表达式1:表达式2
说明:
- 条件表达式的结果为boolean类型
- 根据条件表达式真或假,决定执行表达式1还是表达式2
- 如果表达式为TRUE,则执行表达式1
- 如果表达式为FALSE,则执行表达式2
- 表达式1和表达式2要求是一致的
public class SanYuanTest {
public static void main(String[] args) {
int m = 5, n = 10;
int max = (m > n) ? m : n;
System.out.println(max);
}
}
结果:10