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("不同");
}
} 展开
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("不同");
}
} 展开
5个回答
展开全部
equals方法是比较hashCode的值的,即比较在内存中地址的值。
字符串比较特殊,内容相同的的String在内存中地址是一样的。所以hashCode值是相同的。
而不同的数组对象的hashCode不同,所以得出你以上的结果。
字符串比较特殊,内容相同的的String在内存中地址是一样的。所以hashCode值是相同的。
而不同的数组对象的hashCode不同,所以得出你以上的结果。
追问
那应该用什么方法可以直接比较两个字符数组是否相等呢?(不用对其中每一个字符都进行比较的那种)
追答
if(new String(ch1).equals(new String(ch2))) {
System.out.println("相同");
} else {
System.out.println("不同");
}
可以解决你的问题
展开全部
equals是对象之间比较的方法,
String类的equals方法是重写过了的,所以字符串比较时是相等的
你为里定义的char[]是数组,比较的其实是对象的地址,肯定是不相同的
你可以试试自己定义两个类,然后重写equals方法
String类的equals方法是重写过了的,所以字符串比较时是相等的
你为里定义的char[]是数组,比较的其实是对象的地址,肯定是不相同的
你可以试试自己定义两个类,然后重写equals方法
更多追问追答
追问
好复杂。。。
追答
没有啊,你记住对象的equals比较的是地址,一般是一不同的,
基本类型以及String类的equals方法是重写过了的可以直接用,
其他的你要比较的话可以自己重写equals方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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));
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));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ch1和ch2是两个对象,用equals比较肯定不同
更多追问追答
追问
可equals不是比较内容是否相等的吗,和对象有什么关系呢
追答
如是我说的你不太明白,你可以想一下C语言中“地址“的概念,你的两个new是两个对象,他们的地址是不一样的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询