为真是因为改写了equals方法,判断值是否相等了
package com.equals.test01;
public class equals {
public static void main(String[] args) {
Person person = new Person("xaiomi", 19, "nv");
Person person1 = new Person("xaiomi", 19, "nv");
System.out.println(person1==person);//false
System.out.println(person.equals(person1));//ture
}
}
class Person{
String name;
int age;
String sex;
public Person(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean equals(Object objt)
{
if (this==objt)
return false;
if (objt instanceof Person)
{
Person p=(Person)objt;//因为,objt是顶层父类object类型的,无法直接访问子类特有的方法,所以要强制转换
return this.name.equals(p.name)&&this.age==p.age&&this.sex.equals(p.sex);//判断当前的与传进来的对象属性是否都相同
}
return false;
}
}
列题:
例题2
1.数值和数值相比一样就相等。
2.也有一样,A的ASCII值也是65
3.同样
4.这个时候比较的是地址是否一样,都是new的一个新的,所以不相同
5.str为字符串字符串的equals()方法改写了,所以相同
6.等号两边类型都不同所以对比不了,并且报错