JAVA操作符==和!=和equals()方法之间的关系

Java中操作符==和!=是基本数据类型之间进行比较的操作符,两个基本类型之间比较后得到true或false,当遇到引用对象的时候再使用操作符比较的就是引用,而不是对象,所以就要使用equals方法。

    public static void  main(String[] args){
        
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
        
    }

打印结果:
在这里插入图片描述
打印结果跟预想的结果并不符合,这就是因为操作符==和!=比较的是引用,而不是对象的值。那想对比对象的值,就需要使用equals方法,进行比较。如下:
在这里插入图片描述
但是还有一种特殊情况,会让equals方法出现费解的情况,若我们自己定义了一个类,然后使用该类定义对象的引用,并初始化改对象,然后进行比较,会出现出人意料的情况,代码如下:

public class JavaEqualsFunction {
    int i;
}

首先定义JavaEqualsFunction 类,并定义int i属性,然后创建该类的引用并初始化对象,代码如下;

    public static void  main(String[] args){
        JavaEqualsFunction javaEqualsFunction1 = new JavaEqualsFunction();
        javaEqualsFunction1.i=66;
        JavaEqualsFunction javaEqualsFunction2 = new JavaEqualsFunction();
        javaEqualsFunction2.i=66;
        System.out.println(javaEqualsFunction1.equals(javaEqualsFunction2));
    }

打印结果如下:
在这里插入图片描述
事情再次变得令人费解,结果又是false。这是因为equals方法默认比较的就是引用,所以除非在自己的新类中覆盖该方法,否则不可能出现我们希望的情况,覆盖该类在后边更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值