Java基础-equals和==
package com.hspedu.equals_; public class Course321 { public static void main(String[] args) { // == 和 equals /* * 基本数据类型:==比较值是否相等 * 引用数据类型:==比较对象地址是否相等,是否指向同一对象;equals比较对象存储的值 * */ Person p1 = new Person(); p1.name = "hspedu"; Person p2 = new Person(); p2.name = "hspedu"; System.out.println(p1 == p2); // false System.out.println(p1.name.equals(p2.name)); // true System.out.println(p1.equals(p2)); // false String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1.equals(s2)); // true System.out.println(s1 == s2); // false } } class Person { public String name; }
package com.hspedu.equals_; public class Course321 { public static void main(String[] args) { // Person person1 = new Person("jack", 10, '男'); Person person2 = new Person("smith", 10, '男'); Person person3 = new Person("jack", 10, '男'); System.out.println(person1 == person2); System.out.println(person1.equals(person2)); System.out.println(person1.equals(person3)); /* * 如何比较两个对象的所有属性值? * object类的equals方法,比较地址,需要重写方法 * */ } } class Person { private String name; private int age; private char gender; public boolean equals(Object obj) { if (this == obj) { return true; } // 类型判断,如果是Person类可以比较 if (obj instanceof Person) { Person p = (Person) obj; return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender; } return false; } public Person(String name, int age, char gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } }