1. Object 类
Object
类是 java 语言的最高级父类,- 它要么是一个类的直接父类, 要么就是一个类的间接父类.
- 所有对象包括数组都实现这个类的方法
1.1. Object 类的由来
Object
本身是指对象的意思, 由于所有对象都具有某一些共同的行为,
因此, 专门抽象出一个类:Object
类来表示对象类,
其它所有类都会继承于Object
类, 因此也会拥有Object
类中的方法.
1.2. 关于数组也能继承 Object 类的原因
- 引用数据类型包括: 类/接口/数组
- 引用数据类型又被称作对象类, 因此数组也是对象的一种.
- 对象都存在于堆空间中
1.3. Object 类中常用的一些方法
1.3.1. protected void finalize()
- 作用:
当垃圾回收器确定不存在该对象的更多引用时, 由对象的垃圾回收器调用此方法 - 备注:
这个方法不需要用户进行调用, 垃圾回收器会自动调用.
1.3.2. Class getClass()
- 作用:
返回当前对象的真实类型.
1.3.3. int hashCode()
- 作用:
返回该对象的哈希码值. - 备注:
hashCode
决定了对象在哈希表中的存储位置,
不同对象的hashCode
是不一样的.
1.3.4. boolean equals(Object obj)
- 作用:
拿当前对象(this
)与参数obj
对象作比较. - 备注:
在Object
类中的equals
方法, 本身和==
符号相同,
都是比较对象的内存地址是否相同. - 官方建议:
每个类都应该覆写equals
方法, 不要比较内存地址,
而是去比较用户关心的数据.- 例如:
- 两个学生对象, 并不需要关心如何产生的, 只要学号相同, 就是同一个人.
- 两个字符串, 只要内容相同, 就认为是同一个字符串.
- 例如:
1.3.5. String toString()
- 作用:
表示把一个对象转换为字符串 - 备注:
打印对象时, 其实打印的就是对象的toString
返回的内容.
默认情况下打印对象是打印对象的十六进制的hashCode
值.