zoukankan      html  css  js  c++  java
  • java.lang.Object

    java.lang.Object
    类Object是类层次结构的根类。每个类都使用Object作为超类。
    所有对象(包括数组)都实现这个类的方法。

    Object是根父类,如何理解?
    (一)从继承
    (1)所有类都继承它
    如果一个类没有显式声明它的父类,那么它的父类就是Object。
    (2)说明所有类,所有对象都拥有Object类中的方法
    (3)每一个类的构造器,往上追踪都会调用Object类中的无参构造。
    super()
    (二)从多态
    (1)Object的变量(包括形参)可以接收任意类型的对象
    (2)Object的数组,可以存储任意类型的对象

    数组也是引用数据类型,数组对象也拥有Object类的方法。

    Object的方法:
    (1)Class getClass():返回此Object的运行时类
    Class:类型
    (2)String toString():建议所有子类都重写这个方法。
    注意:
    》》当你打印一个对象时,默认调用这个对象的toString()方法。
    》》当用一个对象与String的值进行“+”拼接操作,也会自动调用这个对象的toString()方法。
    (3)双胞胎
    int hashCode()
    返回该对象的哈希码值。支持此方法是为了提高哈希表(例如java.util.Hashtable提供的哈希表)的性能。
    前期时:知道它是把对象的信息,通过某种算法来计算出来的一个int值。
    设计这个int值,理想状态下,是希望每一个对象都有一个唯一的hash码,但是现实中,可能两个不同的对象他们的hash码是相同的。
    》如果两个对象的hash码不一样,这两个对象一定不同。
    》如果两个对象的hash码是一样的,这两个对象不一定相同。
    》如果两个对象相同,则两者的hash码相同。

    boolean equals(Object obj)(String这个类重写了equals方法 )
    (1)如果一个类没有重写Object的equals方法,那么效果和“==”是一样,比较的是两个对象的地址。
    (2)如果这个类不想用equals来比较地址,而是比较属性的内容,那么需要重写这个方法。

    如果不用IDE工具生成equals方法,那么可以自己重写,自己重写时,要遵循几个原则:
    》自反性:x.equals(x)自己与自己一定相同
    》对称性:x.equals(y)是true,y.equals(x)也是true
    》传递性:x.equals(y),y.equals(z)是true,---》x.equals(z)也要为true。
    》一致性:如果参与equals比较的属性的值都没有修改,那么前后两次调用应该相同x.equals(y)是true。
    》对于任何非空引用值x,x.equals(null)都应返回false
    (4)protected void finalize():当垃圾回收器确定不存在堆该对象的更多引用时,由对象的垃圾回收器调用此方法。
    比喻为:对象被回收之前,留临终遗言的方法
    实际中,这个方法用于彻底释放资源

  • 相关阅读:
    binutils工具集之---objcopy,ranlib,size,strings,strip
    FreeRtos——多任务
    IntelliJ Idea 常用快捷键
    了解Spring-boot-starter常用依赖模块
    Spring Boot项目的内嵌容器
    Spring Boot 简介
    webstorm的个性化设置settings
    webstorm使用心得
    webstorm快捷键
    WebStorm使用快速入门
  • 原文地址:https://www.cnblogs.com/1185937986-jili/p/12860393.html
Copyright © 2011-2022 走看看