java 区别“==”和equals()方法

来源:互联网 发布:蜂窝移动数据选项漫游 编辑:程序博客网 时间:2024/06/05 23:50
/*Object是所有类的父类:它有一个equals方法,这个方法是用来比较两个对象的引用是否相同,而不是比较对象内容是否相同。"=="比较的是两个对象的引用,Object中的equals方法比较的也是两个对象的引用。所以在Object类中==和equals的作用是一样的。所以在子类中一般会重写覆盖此equals方法,使得equals方法实现比较对象内容是否相同的功能。这时==和equals的功能就不一样了。==还适用于比较对象引用,而equals是用于比较对象(具体来说是对象内容)新定义类的对象一般要重写equals方法。*/class Demo{private String name;Demo(String name){this.name=name;}public boolean equals(Object obj)  //重写equals方法。{if(obj==null)return false;if(obj instanceof Demo){Demo d=(Demo)obj;return this.name.equals(d.name);}return false;}}class EqualsTest {public static void main(String[] args) {Demo d1=new Demo("Hello");Demo d2=new Demo("Hello");sop(d1==d2);sop(d1.equals(d2));String str1="Hello";String str2="Hello";String str3=new String("Hello");String str4=new String("Hello");sop(str1==str2);sop(str1.equals(str2));sop(str3==str4);//比较两个对象引用肯定是不一样的。sop(str3.equals(str4));//在String类中重写了Equals方法,比较的是引用指向的对象内容。sop(str1==str3);sop(str1.equals(str3));//System.out.println("Hello World!");}public static void sop(Object obj){System.out.println(obj);}}

0 0
原创粉丝点击