关系操作符详解

                                                   关系操作符详解

关系操作符详解_第1张图片

       关系操作符生成的是一个Boolean(布尔)结果,其计算的是操作数的值之间的关系,其值只有两个true、false。关系是之间的关系也是真假关系。

       关系操作符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)、不等于(!=)。等于和不等于适用于所有的基本数据类型,而其他的比较符不适用于Boolean类型,其主要原因是因为Boolean的值只能为true和false,大于和小于是没有实际意义的。

对象的等价性:

        关系操作符“==”和“!=”也适用于所有的对象,但有时会陷入谜团。

public class operDemo{
public static void main (String [] args){
    Integer i = new Integer(4);
    Integer i1 = new Integer(4);
    System.out.println(i == i1);
    System.out.println(i == i1);
    }
}

       第一个打印语句打印出的布尔值却先false后true,你是不是也觉得是true?两个Integer对象都是相同的,尽管对象的内容相同,但是对象的引用入却是不相同的,语句中的“==”和“!=”比较的是对象的引用。所以输入的结果是先false后true。

       如果比较的是两个对象的内容是否相同,则不能采用上面的方式来进行比较了。Java中提供了equals()方法来进行对象内容的比较。注意:这个方法不适用于基本类型。

public class operDemo{
public static void main (String [] args){
    Integer i = new Integer(4);
    Integer i1 = new Integer(4);
    System.out.println(i.equals(i1));
    }
}

       这次输出的结果却是“true”。但是当你另外创建了类,结果却又是不同:

class value{
    int i;
}
public class operDemo{
public static void main (String [] args){
    Integer a = new Integer(4);
    Integer a1 = new Integer(4);
    a.i = a1.i = 10;
    System.out.println(a.equals(a1));
    }
}

           这次结果却又是false,这里是因为equals()的默认行为是比较引用,所以除非在自己新建的类中覆盖equals()方法,否则就会是false。

          注意:大多数的Java类库中都实现了equals()方法,以便于用来比较对象的内容,而非比较对象的引用。

你可能感兴趣的:(JAVA,关系操作符详解)