最近用到了equals和contains两个方法,两个都有对比的意思,但区别呢?在网上找了些资料,似乎大概能分清了。
首先是文档上的内容:


equals


public boolean equals(Object obj)

指示其他某个对象是否与此对象“相等”。

equals 方法在非空对象引用上实现相等关系:

  ● 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

  ● 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

  ● 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回true。

  ● 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

  ● 对于任何非空引用值 x,x.equals(null) 都应返回 false。

Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

参数:

obj - 要与之比较的引用对象。

返回:

如果此对象与 obj 参数相同,则返回 true;否则返回 false。





contains

public boolean contains(CharSequence s)

当且仅当此字符串包含指定的 char 值序列时,返回 true。

参数:

s - 要搜索的序列

返回:

如果此字符串包含 s,则返回 true,否则返回 false

抛出:

NullPointerException - 如果 s 为 null





似乎有些难懂,尤其是equals的解释,下面是网友的解释内容:

equals是比较两个东西是否等同,这个适用于任何类别的对象

contains是是否包含的意思,那肯定.左边的对象是一个容器了

String现在也有一个contains,那是因为String是一个字符的容器



equals只能判断两个变量的值是否相等。

contains常用与集合中判断某个对象是否含有这个元素





这就明白了,equals是需要两个对象完全相同才会返回true,而contains是要循环遍历容器里的所有内容后判断是否包含对象。