Java 中的“==”和equals()方法区别

1、“==”

    1)用于比较两个基本数据类型数据是否相等,比较的是内存中存储的值是否相等。

    如:int a=100;

           int b=100;

    则a==b结果为true。

    2)用于判断两个引用变量是否指向同一对象。

    如:String a="abc";

           b=a;

    则a==b结果为true。

    另外:String a="abc";

              String b="abc";

    则a==b结果依然为true。(指向字符串常量池中的同一个对象)

2、equals()方法

    1)用于比较两个引用变量指向的对象值是否相等。

    如:String a=new String("abc");

           String b=new String("abc");

    则a==b结果为false,a.equals(b)结果为true。

    2)对于自定义的类,默认会继承Object对象的equals()方法,代码如下:

public boolean equals(Object o){
	return this==o;
}

    结论:

    a)如果自定义类没有覆写Object的equals()方法,则使用equals()的效果和使用“==”一样,即比较两个引用变量是否指向同一个对象。

    b)如果想比较自定义类的两个对象是否相等,则需要覆盖Object的equals()方法,定义自己的比较规则。

    比如:

public class Person{
	private String name;
        public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public boolean equals(Object obj){
		if(this==obj){
			return true;
		}
		Person p=(Person)obj;
		return p.getName().equals(this.name); 
	}
}

猜你喜欢

转载自JokerLinisty.iteye.com/blog/2199217