学习笔记之面向对象编程6(equals)

xiaoxiao2021-02-28  101

equals方法:

Object类中定义有:

《1》public boolean equals(Object obj)方法:提供定义对象是否“相等”的逻辑;

《2》Object的equals方法定义为:x.equals(y),当x和y是同一个对象的应用时,返回true,否则返回false;

《3》一些类,比如String,Date等,重写了Object的equals方法,调用这些类的equals方法,x.equals(y),当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回true否则返回false;

《4》可以根据需要在用户自定义类型中重写equals方法。

实例代码如下:

class thing{ int color,height,weight; thing(int color,int height,int weight){ this.color = color; this.height = height; this.weight = weight; } public boolean equals(Object obj){ if(obj==null)return false; else{ if(obj instanceof thing){ thing mimi = (thing)obj; if(mimi.color==this.color&&mimi.height==this.height&&mimi.weight==this.weight) return true; } } return false; } } public class Testequals{ public static void main(String[] args){ thing t1 = new thing(1,2,3); thing t2 = new thing(1,2,5); System.out.println(t1==t2); System.out.println(t1.equals(t2)); String s1 = new String("java"); String s2 = new String("java"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); } }

运行结果:

false

false

false

true

注:两个对象即使是同一类对象,且属性内容完全形同,两者也不可能==(完全等于),因为两者在内存中的位置决不会一模一样,所以说没有完全相等的x和y。

转载请注明原文地址: https://www.6miu.com/read-69619.html

最新回复(0)