JAVA 数组的比较

来源:百度知道 编辑:UC知道 时间:2024/06/01 10:10:44
import java.util.Arrays;
public class EqualsTest{
public static void main (String arg[]){
char charArray1[]={'a','b','c'};
char charArray2[]={'a','b','c'};
boolean c;
c=charArray1.equals(charArray2);
System.out.println(c); }
}

为什么输出的是false
大家知道的帮个忙哈~~谢谢勒~

帮你改了下代码。是equals方法用的有问题
import java.util.Arrays;
public class EqualsTest{
public static void main (String arg[]){
char charArray1[]={'a','b','c'};
char charArray2[]={'a','b','c'};
boolean c;
c=Arrays.equals(charArray1,charArray2);
System.out.println(c); }
}

如果输出是false,因该是调用的是Object继承来的equals方法
那就是比较引用
sun是这么实现equals方法的
public boolean equals(Object obj) {
return (this == obj);
}

那么自然会返回false

你可以在c=Arrays.equals(charArray1,charArray2); 行设置断点
调试的时候,不选择"单步跳过",而选择"单步跳入",就可以看到他是怎么执行的了

数组本身没有equals方法,但是因为Java中所有的类都继承Object,所以他调用的是Object的equals方法,这个equals方法的声明是:
public boolean equals(Object obj) {
return (this == obj);
}
也就是说equals的判断和 charArray1 == charArray2 的结果一样,都是比较的内存地址.
要想比较内容是否相同,只能用util包中的Array.equals方法.