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

来源:互联网 发布:佛罗里达大学 知乎 编辑:程序博客网 时间:2024/06/05 10:31

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。

原创粉丝点击