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;
}
}