2 qq 27688163 qq_27688163 于 2016.04.09 21:54 提问

java中equals()方法比较

class V{

}
public class T1 {
public static void main(String[] args) {

    V v = new V();
    V v1 = new V();
    System.out.println(v.equals(v1));
}}
为什么输出是false

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.09 21:56
已采纳

两个对象,引用地址不同,当然false
除非你重写V的equals

u013560024
u013560024 回复荆疋: equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较 其指向的对象是否相同的。== 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。
一年多之前 回复
u013560024
u013560024 回复荆疋: 对于字符串变量来说,使用“==”和“equals()”方法比较字符串时“==”比较两个变量本身的值,即两个对象在内存中的首地址。 “equals()”比较字符串中所包含的内容是否相同。
一年多之前 回复
caozhy
caozhy 如果问题解决,请点下我回答右边的采纳。谢谢
一年多之前 回复
caozhy
caozhy 回复荆疋: 如果你有字段,比如其中有个字段name,按照它判断,可以写public boolean equals(Object o){ V v = (V)o; if (v == null) return false; return v.name.equals(name); } public int hashCode() { return name.hashCode(); }
一年多之前 回复
caozhy
caozhy 回复荆疋: public boolean equals(Object o){ return true; } public int hashCode() { return 1; }
一年多之前 回复
qq_27688163
qq_27688163 谢谢
一年多之前 回复
qq_27688163
qq_27688163 回复caozhy: 那要怎样重写?
一年多之前 回复
caozhy
caozhy 回复荆疋: 你说的是字符串,字符串重写了equals,比较字面值。
一年多之前 回复
caozhy
caozhy 回复荆疋: 不是
一年多之前 回复
qq_27688163
qq_27688163 equals()不是比较两个对象的实际内容吗?
一年多之前 回复
CSDNXIAOS
CSDNXIAOS   2016.04.09 22:02

java中equals方法和“==”的比较

分类:
技术贴 2009-02-24 20:04 5129人阅读 评论(3)
收藏
举报
equalsjavaintegerstringcharacterobject

equals 方法是 java.lang.Object
类的方法。
有两种用法说明:
(1)对于字符串变量来说,使用“==”和“equals()”方法比......
答案就在这里:java中equals方法和“==”的比较
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

qq_27688163
qq_27688163 谢谢
一年多之前 回复
curry_du
curry_du   2016.04.09 22:14

因为V类没有重写equals方法,所以将使用父类Object中的equals方法,官方文档中是这样介绍Object的equals方法:this method returns true if and only if x and y refer to the same object (x == y has the value true). 由于是两个不同的对象,所以返回false。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!