JAVA中两个数组的equals运算 5

Stringstr="hello";charc[]={'h','e','l','l','o'};charch[]=str.toCharArray();if(ch.equa... String str="hello";
char c[]={'h','e','l','l','o'};
char ch[]=str.toCharArray();
if(ch.equals(c))
System.out.println("true");
else
System.out.println("false");
结果为什么是false呢
展开
 我来答
走走戊
2014-04-29
知道答主
回答量:4
采纳率:0%
帮助的人:5409
展开全部
数组本身没有equals方法,但是因为Java中所有的类都继承Object,所以他调用的是Object的equals方法,这个equals方法的声明是:
public boolean equals(Object obj) {
return (this == obj);
}
所以说你做的比较是比较两个数组的内存地址,所以是false
如果你要比较着两个数组的内容的话,可以这样写 Arrays.equals(ch,c)
fairytale_zf
推荐于2017-05-20 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:70.1万
展开全部
基本数据类型的数组的equals方法没有重载Object的equals方法,所以跟“==”效果一样
所以你这里 ch.equals(c) 效果和 ch == c是一样的,==比较的是内存地址,结果是false
如果想要比较内容相同,可以使用Arrays.equals(ch,c),或者将数组转换成string后在用equlas方法进行比较
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情缆震A
2014-04-29 · TA获得超过159个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:158万
展开全部
String类的toCharArray()方法中有char result[] = new char[value.length];就是new了一个对象,而你调用char的equals方法,就是在调用Object的equals方法,比较的是2个对象的地址,所以为false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我恨死你的
2014-04-29 · TA获得超过443个赞
知道小有建树答主
回答量:291
采纳率:42%
帮助的人:86.9万
展开全部
你可以按住ctrl进去看看他的实现。它是直接用了object类的方法。return this==obj.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刚子202012
2014-04-29
知道答主
回答量:14
采纳率:0%
帮助的人:7.7万
展开全部
c[]是新创建的一个对象,内存地址与ch[]不同,所以是false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式