黑马程序员技术交流社区

标题: String类的equals方法 [打印本页]

作者: pizhihui    时间: 2015-6-9 21:44
标题: String类的equals方法
Object类的equals方法时和==的效果是一样的,在比较引用数据类型的时候,是比较的地址,但是String类的时候,却是比较的是内容,这是为什么了?这的跟踪源代码看看,
String的equals方法重写了父类Object的equals方法,让比较的是否是内容相同,而不是地址值是否相同

  1.       public boolean equals(Object anObject) {
  2.         if (this == anObject) {//如果是同一个对象,返回true
  3.             return true;
  4.         }
  5.         if (anObject instanceof String) {//判断是否是String类型的
  6.             String anotherString = (String) anObject;
  7.             int n = value.length;
  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.     }
复制代码
从String类的源代码可以看出,String类重写了Object类中的equals方法,代码中比较的就是String中存储的内容是否相同,所以在调用String类的equals方法的时候,比较的是内容是否相同。



作者: GoldMan    时间: 2015-6-9 22:07
好,收藏了
作者: sunny~    时间: 2015-6-9 22:10
嗯,就是这样的
作者: xiaodong    时间: 2015-6-9 22:16
学习了!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2