Java 比较相同类型的两个数组的元素

Java 比较相同类型的两个数组的元素,java,Java,比较这两者,使用链接中提供的相同的equals方法,为什么它们不相等?两个数组仍然包含相同的元素 Student[] arr1 = { new Student(111, "bbbb", "london"), new Student(131, "aaaa", "nyc"), new Student(121, "cccc", "jaipur") }; Student[] newArr = { new Student(131, "aaaa", "nyc"), new Student(111

比较这两者,使用链接中提供的相同的equals方法,为什么它们不相等?两个数组仍然包含相同的元素

 Student[] arr1 = { new Student(111, "bbbb", "london"), new 
 Student(131, "aaaa", "nyc"), new Student(121, "cccc", "jaipur") };

Student[] newArr = {  new Student(131, "aaaa", "nyc"), new 
Student(111, "bbbb", "london"), new Student(121, "cccc", "jaipur") };

这是链接中提供的equals函数,您只需阅读文档即可获得答案

:

如果指定的两个对象数组等于一,则返回true 另一个如果两个数组都包含 相同数量的元素,以及所有对应的元素对 在这两个数组中,数组是相等的。考虑两个对象e1和e2 如果(e1==null?e2==null:e1.equals(e2))则相等换言之 如果两个数组在同一个数组中包含相同的元素,则它们是相等的 订单。此外,如果两个数组引用都相同,则认为它们相等 空


强调我的观点。

你在哪里以及如何称呼平等?为什么你认为他们是平等的?我只是在遵循Geeksforgeks链接中的代码。我主要关心的是,当我比较代码上方的两个数组时,为什么它们不相等。因为它包含相同的元素,但索引比较不同,所以它应该仍然返回true,但显然不是这样强调的措辞不是很精确:说“相同”可能会被误解为
==
,就像JUnit
中的Isame
。我更喜欢前面两句话。
public boolean equals(Object obj) {         
        // typecast obj to Student so that we can compare students
        Student s = (Student) obj;

        return this.rollno == s.rollno && this.name.equals(s.name)
                                && this.address.equals(s.address);
}