错误比较:调用数组对象的equals方法
- 下述代码输出?
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println(a.equals(b));
}
}
- 输出
false
- 原因很简单,数组对象继承
Object
类,Object
类中的equals
方法比较的是对象地址
对于字符数组,可先转换为String类,再调用equals比较
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println((new String(a)).equals(new String(b)));
}
}
- 输出
true
通用的解决方案:使用数组工具类Arrays
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println(Arrays.equals(a, b));
}
}
- 输出
true
版权声明:本文为fat_cai_niao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。