- Java中==和equals()的区别
操作符==:
对于基本数据类型(如int、char、boolean等),==比较的是它们的值是否相等。
对于对象引用类型,==比较的是两个对象的内存地址(即是否指向同一个对象实例)。也就是说,它检查的是两个引用是否指向内存中的同一个位置,也就是是否指向同一个对象。
equals()方法:
equals()是Object类中的一个方法,所有Java类都继承了这个方法。默认情况下,equals()方法的行为与==操作符在对象引用类型上的行为相同,即比较对象的内存地址是否相同。但是,通常建议并推荐为每个类重写equals()方法,以根据类的语义定义“逻辑相等性”。
重写后的equals()方法应该根据对象的逻辑内容(如属性值)来判断两个对象是否相等,而不是比较它们是否指向同一个内存地址。例如,对于一个表示人的Person类,可能需要比较姓名和年龄等属性是否相同来确定两个Person对象是否相等。
如果大家需要视频版本的讲解,欢迎关注我的B站: