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