equals方法是比较hashCode的值的,即比较在内存中地址的值。
字符串比较特殊,内容相同的的String在内存中地址是一样的。所以hashCode值是相同的。
而不同的数组对象的hashCode不同,所以得出你以上的结果。
equals是对象之间比较的方法,
String类的equals方法是重写过了的,所以字符串比较时是相等的
你为里定义的char[]是数组,比较的其实是对象的地址,肯定是不相同的
你可以试试自己定义两个类,然后重写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));
ch1和ch2是两个对象,用equals比较肯定不同
char 用等于判断
~