java基础十五 Object类详解

时间:2020-12-05 23:27:22
Object类:java中类层次结构的根类 所有类都直接/间接继承自该类 构造方法 public Object() 子类构造方法默认访问的是父类的无参构造 主要方法 1.public int hasCode() 返回该对象的哈希码值 默认情况下 该方法会根据对象的地址来计算 不同对象的hashCode()一般不同 但是同一对象的hashCode()值肯定相同 2.pulic final Class getClass() 获取该对象的字节码文件 返回这个对象(Object)的运行时类 注意:这里的Class是描述类的一个类(在java后期的反射会用的比较多) 可以通过Class类中的一个方法(getName())来获取对象所属的类的全名称 3.public String toString() 返回该对象的字符串表示 如果打印对象的引用会默认调用toString()方法 如果它没有重写这个方法 就会调用Object类的toString()方法 注意: 这个方法默认的返回值等于: 对象.getClass().getName()+"@"+Integer.toHexString(hashCode()) 相当于:类名称@哈希码的十六进制表示 其中toHexString()方法返回的是数字的十六进制表示形式 默认情况下 toString()方法返回的数据对我们来说是没有意义的 所以一般建议重写 4.public boolean equals(Object obj) 这个方法表示其他某个对象是否和这个对象“相等" 默认情况下比较的是对象的引用是否相同 没有意义 所以在开发中一般重写 用来比较属性值
知识点: ==和equals方法的异同? 同:都可以用来作比较 返回值都是boolean 异: 1.==是一个比较运算符号 既可以比较基本数据类型(此时比较的是值) 又可以比较引用数据类型 (此时比较的是地址值) 2.equals()是一个方法 只能比较引用数据类型 所有对象都继承Object中的方法 如果没有重写Object类中的equals方法 equals()方法和==号在比较引用类型数据时没有区别(此时底层依赖的是==来实现)重写后的equals方法比较的是对象的属性