码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-12 17:20:04      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

/*
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);
	}
}

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

标签:

原文地址:http://blog.csdn.net/iemdm1110/article/details/51361700

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!