Java中“==”和equals()方法的用法和区别

==的用法

之前提到过, == 是比较运算符,但对于应用来说可以分为两种。

  1. 当 == 号前后为基本类型变量时, == 号两边比较的是数值大小、Unicode码值以及boolean值。
  2. 当 == 号前后为引用类型变量时,比较的则是堆内存中的地址。

equals()的用法

equals()顾名思义,就是一个专门做比较的一个方法,而我们平时经常使用的equals()方法有两种。

  1. 第一种是Object中的equals()方法,这个方法里面运用的是 == 来比较的,所以比较的是堆内存中的地址,由于这个作用不大,所以我们一般会在自己定义的类中把这个方法重写。
public boolean equals(Object obj) {
        return (this == obj);
    }
  1. 第二种是String中重写的Object类,在这个方法中,首先比较的还是地址,用于判断是不是同一个类,如果不满足则会比较里面的内容,内容相同返回true,否则返回false,这个方法在开发中非常常用。
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

二者的比较

通过上面的两个说明以及代码也能看出来二者的区别

  1. 当调用equals()的方法是Object类,则使用equals()和 == 其实没有区别。
Object obj1 = new Object();
Object obj2 = new Object();
System.out.println(obj1.equals(obj2));//false
System.out.println(obj1 == obj2);//false
/*以上两种比较本质上是相同的*/
  1. 而我们常用的情况就是在逻辑判断的时候做比较,判断两个变量是否相同,当比较两个基本类型的时候我们使用 == ,当比较字符串的时候我们会是用String的equals()方法。
System.out.println(1 == 1);//true
System.out.println("我很帅".equals("我很帅"));//你没看错,这个比较是true,我确实很帅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值