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