Java中的Object类及匿名内部类

1.API是应用程序编程接口(Application Program Interface)。整个JDK的类库就是一个javase的API。每一个API配置一套API帮助文档

 

2.首先研究一下老祖宗类Object,因为Object类中的方法都是所有子类通用的,任何一个类默认继承Object,就算没有直接继承,最终也会间接继承。

3.Object类中的常用方法

        ①protected Object clone():负责对象克隆的。

        ②int hashCode():获取对象哈希值的一个方法。

        ③boolean equals(Object obj):判断两个对象是否相等。

        ④String toString():将对象转换成字符串形式。

        ⑤protected void finalize():垃圾回收器负责调用的方法。

4.toString方法

   源代码:

        public String toString(){

                return this.getClass().getName() + "@" + Integer.toHexString(hashCode());

        }

        源代码中默认实现是类名@对象的内存地址通过哈希值转换为十六进制的形式。

   该方法的设计目的是通过调用这个方法可以将一个java对象转换成字符串形式

   java规范中建议所有的子类都重写toString()方法。

5.equals方法

   源代码:

        public boolean equals(Object obj){

                return (this == obj);

        }

        默认实现比较的是两个对象的内存地址。因此也需要进行重写,根据业务要求什么情况下两

      个对象相等来进行重写

   该方法的设计目的是以后编程的过程当中,都要通过equals方法来判断两个对象是否相等

   String类已经重写了toString()和equals()方法。

   重要结论

        ①java中基本数据类型比较是否相等,使用==

        ②java中所有的引用数据类型是否相等统一使用equals方法来判断。

6.finalize()方法

   源代码:

        protected void finalize() throws Throwable{

        }

        只有一个方法体,里面没有代码,而且这个方法是protected修饰的。

   这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法。因此该方法只需要重写,重写完自动会有程序来调用,GC负责调用。

   执行时机:当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法。finalize()方法实际上是SUN公司为Java程序员准备的一个时机---垃圾销毁时机,如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中。

   在项目中可能有这样的业务需求:记录一下所有对象在JVM中被释放的时间,这是就要把这段代码写到finalize()方法中。

   代码:System.gc();    //建议启动垃圾回收器。不过只是建议,可能启动,也可能不启动

7.hashCode()方法

   源代码:

        public native int hashCode();

        这个方法不是抽象方法,是带有native修饰符的本地方法,底层调用C++程序。

   该方法返回的是哈希码,实际上就是一个java对象的内存地址,经过哈希算法,得出的一个值。所以hashCode()方法的执行结果可以等同看作一个java对象的内存地址。

8.内部类:在类的内部又定义了一个新的类。但是使用内部类编写的代码,可读性很差,能不用尽量不用。

   内部类的分类:

        ①静态内部类

        ②实例内部类

        ③局部内部类

    匿名内部类是局部内部类的一种,因为这个类没有名字而得名。不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用,并且代码太乱,可读性差。

PS:根据动力节点课程自己归纳总结,如有侵权,联系删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值