关系运算符(==, !=)比较的是啥?equals()比较的是啥
文章目录
关系运算符
关系运算符会通过产生一个布尔(boolean)结果来表示操作数之间的关系。如果关系为真,则结果为 true,如果关系为假,则结果为 false。关系运算符包括小于 <,大于 >,小于或等于 <=,大于或等于 >=,等于 == 和不等于 !=。
== 和 != 可用于所有基本类型,但其他运算符不能用于基本类型 boolean,因为布尔值只能表示 true 或 false,所以比较它们之间的 “大于” 或 “小于” 没有意义。
== 和 != 测试对象等价
== 和 != 用于比较对象时,比较的是对象引用。但有个特殊情况
特殊情况
基本数据类型int 的包装类型 Integer 有些特殊。
关系运算符 == 和 != 同样适用于所有对象之间的比较运算,但它们比较的内容却经常困扰 Java 的初学者。下面是代码示例:
// operators/Equivalence.java
public class Equivalence {
public static void main(String[] args) {
Integer n1 = 47;//(自动装箱)反编译:系统自动执行valueOf方法,拆箱则是:intValue方法。
Integer n2 = 47;
System.out.println(n1 == n2); //true
System.out.println(n1 != n2); //false
System.out.println("-----------------------------");
System.out.println("如果是通过new创建出来的,肯定不等");
Integer i1 = new Integer(47);
Integer i2 = new Integer(47);
System.out.println("i1 == i2:"

本文详细介绍了Java中关系运算符`==`和`!=`在比较对象时的实际行为,特别是对于Integer类型的特殊情况。内容强调了这些运算符比较的是对象引用而非内容,并举例说明了当值在[-128,127]范围内时,Integer对象的缓存导致的特殊情况。此外,还讨论了`equals()`方法的默认行为及其在String类中的重写,以及如何在自定义类中正确重写`equals()`以比较对象内容。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



