# 平等、关系和条件运算符
# 平等和关系运算符
平等和关系运算符确定一个操作数是否大于、小于、等于或不等于另一个操作数。大多数这些运算符也可能看起来很熟悉。请记住,当测试两个原始值是否相等时,您必须使用「==」,而不是「=」。
== 相等
!= 不等
> 大于
>= 大于等于
< 小于
<= 小于等于
2
3
4
5
6
以下程序, ComparisonDemo 测试比较运算符:
ComparisonDemo {
public static void main(String [] args){
int value1 = 1;
int value2 = 2;
if(value1 == value2)
System.out.println(“value1 == value2”);
if(value1!= value2)
System.out.println(“value1!= value2”);
if(value1> value2)
System.out.println(“value1> value2”);
if(value1 <value2)
System.out.println(“value1 <value2”);
if(value1 <= value2)
System.out.println(“value1 <= value2”);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
输出
value1 != value2
value1 < value2
value1 <= value2
2
3
# 条件运算符
&&
和 ||
在两个布尔表达式运算中执行的时候。这些操作符表现出「短路」的行为,这意味着只有在需要时才对第二个操作数进行评估。
以下程序, ConditionalDemo1 测试这些运算符:
class ConditionalDemo1 {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
if((value1 == 1) && (value2 == 2))
System.out.println("value1 is 1 AND value2 is 2");
if((value1 == 1) || (value2 == 1))
System.out.println("value1 is 1 OR value2 is 1");
}
}
2
3
4
5
6
7
8
9
10
11
另一个条件运算符?:
可以被认为是一个 if-then-else
语句的简写(将在本课后面章节进行讨论).该运算符也称为三元制运算符,因为它使用三个操作数。在下面的例子中,这个操作应该被解读为:如果 someCondition 为 true,将 value1 赋值给 result,否则将 value2 赋值给 result
以下程序, ConditionalDemo2 测试?:
操作:
class ConditionalDemo2 {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
int result;
boolean someCondition = true;
result = someCondition ? value1 : value2;
System.out.println(result);
}
}
2
3
4
5
6
7
8
9
10
11
12
因为这 someConditio 为 true,这个程序打印「1」到屏幕。 使用?:
操作符而不是if-then-else
声明,如果它使您的代码更可读;例如,当表达式紧凑并且没有副作用(如分配)时。
# 类型比较运算符 instanceof
所述instanceof
操作者的对象进行比较,以指定类型。您可以使用它来测试对象是否是类的实例,子类的实例或实现特定接口的类的实例。
以下程序 InstanceofDemo 定义了一个父类(命名 Parent),一个简单的接口(命名 MyInterface)和一个从父级继承并实现接口的子类(命名 Child)。
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
输出
obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true
2
3
4
5
6
使用 instanceof 操作符时,请记住,null 不是任何对象的实例。
← 分配、算术和一元运算符 按位和位移操作符 →