码迷,mamicode.com
首页 > 其他好文 > 详细

equals()和==的区分

时间:2018-01-10 18:36:36      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:obj   对象   val   不同   string类   引用   ret   while   变量   

1.==是一个操作符,用于比较两个引用的值是否相等。

2.equals()是Object中的一个方法,默认实现如下。可以看到,在Object中,equals()方法与==操作符的效果相同。

1 public boolean equals(Object obj) {
2         return (this == obj);
3     }

2.1 equals()的重写版本

由于Object是java所有类的父类,所以java类均可以根据需要重写equals()方法。

因此,需要特别注意的是:不同的对象或者类,其equals()方法的实现可能是不同的。

2.1.1 String类中equals()的重写版本

 1 public boolean equals(Object anObject) {
 2         if (this == anObject) {//如果两个引用相等,则直接返回true;
 3             return true;
 4         }
 5         if (anObject instanceof String) {//如果传入的对象是String类型,则比较两个String的值。值相等,则返回true;
 6             String anotherString = (String) anObject;
 7             int n = value.length;//value是String类中的一个私有变量,是一个char数组,用于存储该String实例的字符。
 8             if (n == anotherString.value.length) {
 9                 char v1[] = value;
10                 char v2[] = anotherString.value;
11                 int i = 0;
12                 while (n-- != 0) {
13                     if (v1[i] != v2[i])
14                             return false;
15                     i++;
16                 }
17                 return true;
18             }
19         }
20         return false;
21     }

java类库中均对equals()方法进行重写,String类中的实现如上。可以看到,返回true的条件是:

  (1)传入的对象引用与该String引用相等;

  (2)传入的对象是String类的一个实例且值与String的值相等。

equals()和==的区分

标签:obj   对象   val   不同   string类   引用   ret   while   变量   

原文地址:https://www.cnblogs.com/walkingzq/p/8259920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!