运算符
Java支持如下运算符:优先级()
-
算术运算符:+,-,*,/,%,++,–
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
-
逻辑运算符:&&(与),||(或),!(非)
-
位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
-
条件运算符 ?:
-
扩展赋值运算符:+=,-=,*=,/=
package operator;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
//Ctrl+D 复制当前行到下一行(不用选中)
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a/(double)b);
}
}
运算结果:
-30
-10
200
0
0.5
package operator;
public class Demo03 {
public static void main(String[] args) {
// 关系运算符返回的结果:正确,错误(布尔值)
// 通常与if一起
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
运算结果:
false
true
false
true
区分a++和++a
package operator;
public class Demo04 {
public static void main(String[] args) {
// ++,-- 自增,自减,一元运算符
int a = 3;
int b = a++;
// a++ a = a + 1
int c = ++a; // ++a a = a + 1
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
输出结果:
5
3
5
短路运算
package operator;
public class Demo05 {
public static void main(String[] args) {
int a = 5;
boolean b = (a<4) && (a++<4);
System.out.println(a);
System.out.println(b);
}
}
运算结果:
5 //证明a++没有执行,在判断了a<4为flase时便停止了运算,即短路运算
false
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001(异或:同为0,异为1)
~B = 1111 0010
0000 0000 | 0 |
---|---|
0000 0001 | 1 |
0000 0010 | 2 |
0000 0011 | 3 |
0000 0100 | 4 |
0000 1000 | 8 |
0001 0000 | 16 |
位运算效率极高
*<< 2 左移
>> /2 右移
字符串连接符
package operator;
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a +=b;
a-=b;
System.out.println(a);
// 字符串连接符 + 遇见String类型后面都转换成字符串连接
System.out.println(""+a+b);
System.out.println(a+b+""); // + 有先后顺序
System.out.println(a+a+""+b);// 未遇到String前不发生转换
}
}
运行结果:
10
1020
30
2020
条件运算符(三元运算符)
package operator;
public class Demo07 {
public static void main(String[] args) {
// x ? y : z
// 如果x == true,则结果为y,否则为z
int score = 80;
String type = score > 60 ? "及格" : "不及格";
System.out.println(type);
}
}
运算结果:
及格