A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2014-6-18 23:34  /  1242 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

楼主,这好像跟StringBuffer没啥关系吧,源码如下:

ArrayList的contains方法
  1. public boolean contains(Object o) {
  2.         return indexOf(o) >= 0;
  3.     }
复制代码
再来看indexOf方法:
  1.     public int indexOf(Object o) {
  2.         if (o == null) {
  3.             for (int i = 0; i < size; i++)
  4.                 if (elementData[i]==null)
  5. return i;
  6.         } else {
  7.             for (int i = 0; i < size; i++)
  8.                 if (o.equals(elementData[i]))
  9.                     return i;
  10.         }
  11.         return -1;
  12.     }
复制代码
显然走的是equals方法,而这个o是Object父类,所以,要看实际传进来的是那种类型了,如果是String,那equals比较的字面值

如果是StringBuffer,看一哈API就知道,StringBuffer继承了java.lang.Object类的equals方法,再看Object的equals源码:
  1.     public boolean equals(Object obj) {
  2.         return (this == obj);
  3.     }
复制代码
一切都真相大白了。



评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马