关系操作符详解
关系操作符详解
关系操作符生成的是一个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()方法,以便于用来比较对象的内容,而非比较对象的引用。
小沐CA