java equals()方法

java中==与equals()的区别

 

==: 基本数据比较的是值的大小(值相同则返回true),

  引用变量比较的是引用的地址(两个引用变量指向同一个对象时则返回true)。

 

equals()方法的本意是要比较对象是否相同

 1 public class Equals {
 2     public static void main(String[] args) {
 3         Score s1 = new Score(10);
 4         Score s2 = new Score(10);
 5         if (s1.equals(s2)) {
 6             System.out.println("等しい");
 7         } else {
 8             System.out.println("等しくない");
 9         }
10 
11         if (s1.hashCode() == s2.hashCode()) {
12             System.out.println("等しい");
13         } else {
14             System.out.println("等しくない");
15         }
16 
17         if (s1.toString() == s2.toString()) {
18             System.out.println("等しい");
19         } else {
20             System.out.println("等しくない");
21         }
22 
23         if ((s1.toString()).equals(s2.toString())) {
24             System.out.println("等しい");
25         } else {
26             System.out.println("等しくない");
27         }
28 
29         System.out.println(s1);
30         System.out.println(s1.toString());
31         System.out.println(s2);
32         System.out.println(s2.toString());
33     }
34 }

实行结果为

等しくない
等しくない
等しくない
等しくない
興味.Score@b98fe1
興味.Score@b98fe1
興味.Score@952527
興味.Score@952527

 

由此可以看出,比较的其实是引用,既要确认两个对象的引用是否相同。、

s1,s2返回的是内存所对应的哈西值。

==不允许我们进行重写

equals()方法可以进行重写,可以达到比较对象的值的大小而不比较引用。

例如String.equal()

 1 public class StringEqual {
 2 
 3     public static void main(String[] args) {
 4         String a=new String("AAA");
 5         String b="AAA";
 6         if(a==b){
 7             System.out.println("true");
 8         }else{
 9             System.out.println("false");
10         }
11         if(a.equals(b)){
12             System.out.println("true");
13         }else{
14             System.out.println("false");
15         }
16 
17     }
18 
19 }

返回是

false

true

 

posted @ 2016-05-06 11:45  追风小伙  阅读(213)  评论(0编辑  收藏  举报