equals() 函数用于比较两个数组是否相等,如何使用?
equals() 函数是 Java 语言中的一个比较函数,用于比较两个数组是否相等。该函数可以用于比较两个基本类型数组或者两个引用类型数组。基本类型数组包括 byte、short、int、long、float、double、char、boolean 这些类型,而引用类型数组包括各种对象数组。
equals() 函数有以下几种使用方式:
1、用于比较基本类型数组
(1)比较整数数组是否相等
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b));
输出结果为 true。
(2)比较浮点数数组是否相等
float[] a = {1.0f, 2.0f, 3.0f};
float[] b = {1.0f, 2.0f, 3.0f};
System.out.println(Arrays.equals(a, b));
输出结果为 true。
2、用于比较引用类型数组
(1)比较字符串数组是否相等
String[] a = {"hello", "world", "!"};
String[] b = {"hello", "world", "!"};
System.out.println(Arrays.equals(a, b));
输出结果为 true。
(2)比较对象数组是否相等
Person p1 = new Person("Tom", 18);
Person p2 = new Person("Tom", 18);
Person[] a = {p1, p2};
Person[] b = {p1, p2};
System.out.println(Arrays.equals(a, b));
Person 类的代码:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age &&
Objects.equals(name, person.name);
}
}
输出结果为 true。
通过上述代码可以看出,对于引用类型数组,equals() 函数的比较方式是对数组中的每个元素都调用 equals() 函数进行比较,只有当每个元素都相等时,数组才被认为是相等的。
需要注意的是,当数组中的元素是 null 时,equals() 函数对于两个数组的比较会返回 false。也就是说,两个数组元素都为 null 时,equals() 函数并不能比较它们是否相等。
因此,为了避免出现上述情况,可以在比较数组前先判断数组是否为 null,以及数组长度是否相等。如果不相等,则可以直接认定两个数组不相等。对于数组元素为 null 的情况,需要在比较前进行特殊的处理。
综上所述,equals() 函数可以用于比较数组是否相等,并且支持比较基本类型数组和引用类型数组。在使用该函数时,需要注意数组元素是否为 null 的情况,以及比较前是否先判断数组是否为 null,以及数组长度是否相等。这样可以保证 equals() 函数的正确性和效率。
