运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 检查是否是类的对象 | "Hello" instanceof String | true |
比较运算符的结果都是 boolean 类型,要么是 true 要么是 false。
比较运算符 "==" 不能误写成 "="
class CompareTest{
public static void main(String[] args){
int i = 10;
int j = 20;
System.out.println(i==j); //false
System.out.println(i=j); //20
boolean b1 = true;
boolean b2 = false;
System.out.println(b2==b1); //false
System.out.println(b2=b1); //true
}
}
运算符:逻辑运算符
- &: 逻辑与
- &&:短路与
- |: 逻辑或
- ||:短路或
- ! :逻辑非
- ^ : 逻辑异或
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
class LogicTest{
public static void main(String[] args){
// 区分 & 与 &&
// 相同点1:当 & 与 && 的运算结果相同
// 相同点2:当符号左边是true时,二者都会执行符号右边的运算
// 不同点: 当符号左边是false时,& 继续执行符号右边的运算,&&不再执行符号右边的运算。
boolean b1 = true;
int num1 = 10;
if (b1 & (num1++ > 0)){
System.out.println("Hello, beijing"); //Hello, beijing
} else {
System.out.println("Hello, nanjing");
}
System.out.println("num1 = " + num1); //11
boolean b2 = false;
int num2 = 10;
if (b2 && (num2++ > 0)){
System.out.println("Hello, beijing"); //Hello, beijing
} else {
System.out.println("Hello, nanjing");
}
System.out.println("num2 = " + num2); //10
// 区分 | 与 ||
// 相同点1: | 与 || 的运算结果相同
// 相同点2: 当符号左边是false时,两者都执行符号右边的运算
// 不同点: 当符号左边是tue时,| 继续执行符号右边的运算,||不再执行符号右边的运算。
boolean b3 = true;
int num3 = 10;
if (b3 | (num3++ > 0)){
System.out.println("Hello, beijing"); //Hello, beijing
} else {
System.out.println("Hello, nanjing");
}
System.out.println("num3 = " + num3); //11
boolean b4 = true;
int num4 = 10;
if (b4 || (num4++ > 0)){
System.out.println("Hello, beijing"); //Hello, beijing
} else {
System.out.println("Hello, nanjing");
}
System.out.println("num4 = " + num4); //10
}
}
运算符:三元运算符
一: 格式:(条件表达式)?表达式1:表达式2
1.条件表达式为 true ,运算后的结果是表达式1
2.条件表达式为 false ,运算后的结果是表达式2
二: 表达式1和表达式2位同种类型
三: 三元运算符与if-else的联系与区别:
1.三元运算符可简化为 if-else 语句
2.三元运算符要求必须返回一个结果
3.if后的代码块可有多个语句
4.如果程序可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简单,执行效率高。
class SanYuanTest {
public static void main(String[] args){
//获取两个整数的较大值
int m = 12;
int n = 5;
int max = (m > n)?m : n;
System.out.println(max); //12
double num = (m > n)? 2 : 1.0;
System.out.println(num); //2.0
n = 12;
String maxStr = (m > n)? "m大" : ((m == n)? "m 和 n 相等" : "n大");
System.out.println(maxStr); //m 和 n 相等
//获取三个数的最大值
int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1 > n2)? n1 : n2;
int max2 = (max1 > n3)? max1 : n3;
System.out.println("三个数中的最大值为: " + max2); //三个数中的最大值为: 30
// 不建议
int max3 = (((n1 > n2)? n1 : n2) > n3)? ((n1 > n2)? n1 : n2) : n3;
System.out.println("三个数中的最大值为: " + max3); //三个数中的最大值为: 30
// 改写成 if-else
if(m > n){
System.out.println("m=" + m);
}else{
System.out.println("n=" + n); //n=12
}
}
}