Java中“==“与equals的区别

本文探讨了Java中'=='与equals的区别,介绍了如何在基本类型和引用类型上进行比较,重点讲解了String类equals方法的重写及其在实际开发中的应用。通过实例说明了自定义类equals方法的使用,以及如何根据类是否重写equals来判断对象相等性。
摘要由CSDN通过智能技术生成

1."=="既可以比较基本数据类型也可以比较引用数据类型。比较基本数据数据类型时,比较的是值得大小,与类型无关。比较引用数据类型时,比较的是内存地址。

		//基本数据类型
		int i = 10;
		int j = 10;
		double d = 10.0;
		char c = 10;
		System.out.println(i == j); //true
		System.out.println(i == d); //true
		System.out.println(i == c); //true
		//引用数据类型
		String str1 = new String("Hello");
		String str2 = new String("Hello");
		System.out.println(str1 == str2); //false
		//可以理解为str1和str2指向内存中两块不同的空间,
		//所以str1和str2存储的地址值不相同,所以二者不相等。

2.equals属于,java.lang.Object类里的方法,如果该方法没有被重写默认也是==,我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值得错误观点。

//Jeava中所有的类都直接或间接的继承自Object类
//Object类中equals()的定义
public boolean equals(Object obj){
	return(this == obj);
}
//obj是一个引用,存储的是对象的地址,this同理。
//所以该方法如果不被重写,作用与==相同。

3.具体要看自定义类里有没有重写Object得equals方法来判断。像String, Date, File, 包装类都重写了Object类中的equals方法,重写后比较的是两个对象的实体内容是否相同。

4.通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

public class Customer {
	String name;
	int age;
	@Override
	public boolean equals(Object obj) {
		if (this == obj) { //两者指向内存中同一块空间
			return true;
		}
		if (!(obj instanceof Customer)) {//对象obj不属于类Customer
			return false;
		}
		Customer other = (Customer) obj;//强制类型转换
		return age == other.age && Objects.equals(name, other.name);
	}
}

eclipse自动生成equals方法:
source -> Generate hashCode() and equals()

在这里插入图片描述

以上内容总结自b站,宋红康老师的视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值