1.Object类的tostring方法
2.Object类的equals方法
Person默认继承了Object类,所有可以使用object类的equals方法
boolean equals (Object obj); Object中的成员方方法
指示其他某个对象是否与此对象相等
Object类中equals方法的源码
public boolean equals(Object obj){
return (this==obj); == 本来就是一个比较运算符返回的就是一个boolean值 true or false
}
参数:Object obj;可以传递任意的对象
方法体: == 本来就是一个比较运算符返回的就是一个boolean值 true or false
基本数据类型:比较的是值
引用数据类型:比较的是两个对象的地址值
this:哪个对象调用的方法,方法中的this就是哪个对象 这里是person调用的equals方法,所以this就是person
boolean equals (Object obj); 中的obj是:传递过来的参数person1
this == obj 比较的是 person == person1 又因为引用数据类型比较的是地址值所以地址值不相等
3.重写equals方法
用Objects类中的equals方法比较地址值也是没有意义的,因为new两个对地址值肯定不一样,所以重写equals方法用来比较对象的属性值(name 和 age)一样true 不一样 false
用Objects类中的equals方法比较地址值也是没有意义的,因为new两个对地址值肯定不一样,所以重写equals方法
用来比较对象的属性值(name 和 age)
问题:隐含着一个多态
Object obj = person1 = new Person("古力娜扎",20);
Object(父) obj=new Person(子)("古力娜扎",20);这个相当于是多态
多态弊端:无法使用子类特有的内容(属性方法) //成员变量 编译看左运行看左 成员方法 编译看左运行看右
解决 可以使用[向下转型] 把Object-->person类型
Person类
psvm
加instanceof判断
优化1 ; 输入 随机数或者null
优化2 null
优化3. person.equals(person) 自己跟自己比较
直接快捷键重写equals
4.细说Objects类
Objects类是一个工具类,提供了一些方法来操作对象,注意:他是由一些静态的实用方法组成,这些方法是空指针安全或容忍空指针的方法,用于计算对象的hashcode,返回对象的字符串表示形式,比较两个对象。



