详述==与equals区别

一、"=="

1.对于基本数据类型==用于比较两个变量的值是否相等

    int i = 2;
    int j = 3;
    System.out.println(i == j);

结果输出:false

2.对于引用数据类型==用于比较二者是否指向同一对象(存储的内存地址是否相同)

Student john = new Student("john");
Student tomy = new Student("tomy");
System.out.println(john == tomy); // false

结果输出:false

3.我们来看一下Object中equals的源码

public boolean equals(Object obj) {
        
        return (this == obj);
    }

通过源码我们可以看出在Object中==与equals作用相同,都是用于比较指向的对象是否相同

我们再来看一下String类中的equals方法

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;//将上转型对象下转型
        int n = value.length;//返回调用此方法的String对象组成的char数组的长度
        if (n == anotherString.value.length) {//比较两个String对象组成的字符数组长度是否相同
            char v1[] = value;//将String对象的每个字符转换成char数组
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])//挨个对比
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

String中对equals方法进行了重写,在这个类中equals方法用于比较两个字符串内容是否相同

二、实例

		String name1 = "jim";
		String name2 = "tim";
		System.out.println(name1.equals(name2));
		Test test = new Test();
		System.out.println(name1.equals(test));
		String name3 = new String("jim");
		System.out.println(name1.equals(name3));

输出结果:false

false

true

根据输出结果我们可以得出在String类中重写的方法用于比较两个字符串内容是否相同,第一步先检查地址,然后再对内容进行挨个对比

三、总结

==可以用于比较基本类型的值是否相等,或者用于比较引用类型的变量是否指向同一对象;equalsObject类中的方法,默认与==行为一致,但可以通过重写的方法实现自定义的规则比较,常用的类中String类的equals方法用于比较内容是否相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值