文档

Java™教程
隐藏目录
相等、关系和条件运算符
路径: 学习Java语言
课程: 语言基础
章节: 运算符

相等、关系和条件运算符

相等和关系运算符

相等和关系运算符确定一个操作数是否大于、小于、等于或不等于另一个操作数。大部分这些运算符对你来说可能都很熟悉。记住,在测试两个基本值是否相等时,必须使用"==",而不是"="。

==      等于
!=      不等于
>       大于
>=      大于等于
<       小于
<=      小于等于

下面的程序ComparisonDemo测试了比较运算符:

class 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");
    }
}

输出:

value1 != value2
value1 <  value2
value1 <= value2

条件运算符

&&||运算符对两个布尔表达式执行条件AND条件OR操作。这些运算符表现出“短路”的行为,这意味着只有在需要时才会评估第二个操作数。

&& 条件AND
|| 条件OR

下面的程序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");
    }
}

另一个条件运算符是?:,可以看作是if-then-else语句的简写形式(在本课程的控制流程语句部分讨论)。这个运算符也被称为三元运算符,因为它使用三个操作数。在下面的例子中,这个运算符应该理解为:“如果someConditiontrue,将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);
    }
}

由于someCondition为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 {}

输出:

obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true

在使用instanceof运算符时,请记住null不是任何实例。


上一页:赋值、算术和一元运算符
下一页:位运算符和位移运算符