给你个例子,断点跟踪输出那里就明白了。
- Person p11 = new Person("ww", 11);
- Person p12 = new Person("xx", 12);
- Person p13 = new Person("yy", 13);
- Person p21 = new Person("ww", 11);
- Person p22 = new Person("xx", 12);
- Person p23 = new Person("yy", 13);
- Person[] ps1 = { p11, p12, p13 };
- Person[] ps2 = { p21, p22, p23 };
- System.out.println(Arrays.equals(ps1, ps2));// true
- System.out.println(Arrays.deepEquals(ps1, ps2));// true
- Person[][] pss1 = { ps1, ps2 };
- Person[][] pss2 = { ps2, ps2 };
- System.out.println(Arrays.equals(pss1, pss2));// false
- System.out.println(Arrays.deepEquals(pss1, pss2));// true
复制代码
- public class Person {
- private int age;
- private String name;
- public Person(String name, int age) {
- super();
- this.age = age;
- this.name = name;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + age;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Person other = (Person) obj;
- if (age != other.age)
- return false;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
- }
- }
复制代码 |