首页 > 其他 > 详细

equals()和==的区分

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

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()和==的区分

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!