类Object是类层次结构的根(最顶层)类。每个类都使用Object作为超(父类)类。也就是说
一个类都会直接或者间接的继承自该类
所有对象都实现了这个类的方法
equals方法:
boolean equals(Object obj):判断其他某个对象是否与此对象相等
源码:
==比较运算符:
基本数据类型:比较的是值
引用数据类型:比较的是两个对象的地址值
在类中重写equal方法,比较两个类的属性
比较时隐含多态:
Object obj=p2 =new person("a",1);
多态弊端:无法使用子类特有的内容(属性,方法)
解决: 向下转型,把Object转换为person
优化:
(1)向下转型时增加一个判断if(obj instanceof person),防止向下转型出错
(2)如果是null,直接返回false
(3)如果传递的参数时this本身 直接返回true if (this==obj)
快捷键Fn+Alt+insert :equals()+hashcode();
toString方法:
在对象调用 默认tostring方法或sout方法时,打印的是类的地址
tostring()的重写:
快捷键Fn+Alt+insert找到tostring()
定义一个类时,不仅要添加Getter和Setter方法,还要添加toString方法
总结:
Objects类:
在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,由一些静态的实用方法组成,
这些方法时null-safe(空指针安全的)或null-tolerant(容忍空指针的)
下面出现空指针异常
equals()方法:
Objects.equals(obj1,obj2):
判断obj1,obj2是否相等。(防止有一个为空,空对象不能调用equal()方法)
源码: