java中equals对字符数组的判断

为什么是不同啊,难道equals只对String有效publicstaticvoidmain(String[]args){char[]ch1=newchar[]{'z',... 为什么是不同啊,难道equals只对String有效
public static void main(String[] args) {
char[] ch1 = new char[]{'z', 'x', 'c'};
char[] ch2 = new char[]{'z', 'x', 'c'};
if(ch1.equals(ch2)) {
System.out.println("相同");
} else {
System.out.println("不同");
}
}
展开
 我来答
dou桠
推荐于2018-01-04
知道答主
回答量:16
采纳率:0%
帮助的人:5.4万
展开全部
equals方法是比较hashCode的值的,即比较在内存中地址的值。
字符串比较特殊,内容相同的的String在内存中地址是一样的。所以hashCode值是相同的。
而不同的数组对象的hashCode不同,所以得出你以上的结果。
追问
那应该用什么方法可以直接比较两个字符数组是否相等呢?(不用对其中每一个字符都进行比较的那种)
追答
if(new String(ch1).equals(new String(ch2))) {
System.out.println("相同");
} else {
System.out.println("不同");
}
可以解决你的问题
蓝风紫电
2013-08-16 · TA获得超过805个赞
知道小有建树答主
回答量:785
采纳率:100%
帮助的人:534万
展开全部
equals是对象之间比较的方法,
String类的equals方法是重写过了的,所以字符串比较时是相等的
你为里定义的char[]是数组,比较的其实是对象的地址,肯定是不相同的
你可以试试自己定义两个类,然后重写equals方法
更多追问追答
追问
好复杂。。。
追答
没有啊,你记住对象的equals比较的是地址,一般是一不同的,
基本类型以及String类的equals方法是重写过了的可以直接用,
其他的你要比较的话可以自己重写equals方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小明真的很努力
2018-01-04
知道答主
回答量:1
采纳率:0%
帮助的人:901
展开全部
1、数组是一个Object对象,所以直接使用数组的equals()方法,实际上是使用Object类的equals()方法。
2、Object类的equals()方法,实质上还是使用==比较对象。
3、JDK中很多类重写了equals()方法,包括java.lang.String类和java.util.Arrays类。
4、当比较两个字符串的时候,它使用的是String类下的equals()方法,这个方法比较的是对象值。
5、当比较两个数组的值的时候,需要使用Arrays类中的equals()方法。
6、代码示例:
char a[] = new char[] { 'a', 'b', 'c' };
char b[] = new char[] { 'a', 'b', 'c' };
System.out.println(Arrays.equals(a, b));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丝蓉德拉库比
2013-08-16 · TA获得超过375个赞
知道答主
回答量:68
采纳率:0%
帮助的人:67.1万
展开全部
ch1和ch2是两个对象,用equals比较肯定不同
更多追问追答
追问
可equals不是比较内容是否相等的吗,和对象有什么关系呢
追答
如是我说的你不太明白,你可以想一下C语言中“地址“的概念,你的两个new是两个对象,他们的地址是不一样的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
char 用等于判断

~
追问

改为==还是不同啊

追答
char 用等于判断

不是说char[]。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式