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()方法,代码如下:
class="java" name="code">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); } }
?