Java源码学习JDK(day04)

目录

JDK库的根类:Object

内部类:

完整代码:


JDK库的根类:Object


/*
因为这些方法都是子类通用的,任何一个类默认继承Object,就算没有直接继承,最终也会间接继承
Object类中常用的方法:
如何查找:
1.查阅源代码(比较麻烦)
2.查阅Java的类库的帮助文档
API(Application Program interface):应用程序编程接口,整个JDK的类库就是一个JavaSE的API,每个API都会配置一套API帮助文档,就是sun公司提前写好的类库
常用方法:
protected Object clone()  //负责对象克隆
boolean    equals (Object obj)  //判断两个对象是否相等
int    hashCode()  //获取对象哈希值
protected void finalize()  //垃圾回收器负责调用的方法
String    toString()  //将对象转化为字符串形式

关于Object类中的toString()方法(返回值为String类型字符串)
源代码:
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
源代码上toString()方法默认实现:
类名+@+对象的内存地址转换为十六进制的形式
作用:调用这个方法可以将这个java对象转换为字符串形式
建议所有的子类都去重写toString()方法

关于关于Object类中的equals()方法
源代码:
public boolean equals(Object obj) {
        return (this == obj);
    }
源代码上toString()方法默认实现:
默认实现上调用的还是==,而==不能判断两个java对象是否相等,Object类中的equals方法不够用,则需要重写equals方法
作用:以后编程的过程当中,都要通过equals方法来判断两个对象是否相等
//JAVA语言中的字符串String,重写了toString和equals方法
String类已经重写equals方法,比较两个字符串不能用==,必须使用equals方法,
String类已经重写toString方法。
//Java中基本数据类型的数据是否相等采用==,Java中所有引用数据类型的数据统一采用equals方法来判断
equals方法的深层理解:
 //只要不是类中自带的重写equals方法,都要在类中重写equals方法,防止一个类中还有其他引用数据类型,
 需要在里面创建对象,此时重写equals方法,有效避免比较引用类中的对象地址,从而比较内容

 //关于Object类中的finalize方法
源代码;
     protected void finalize() throws Throwable { }
finalize方法只有一个方法体,里面没有代码,用protected关键字修饰
这个方法不需要程序员手动调用,JVM垃圾回收器自动调用,只需要重写方法即可
当一个对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize方法,同样也是为程序员准备了一个时机:垃圾回收时机
static{}静态代码块也准备了一个时机:类加载时机

//关于hashCode方法
源代码:
public native int hashCode();
这个方法不是抽象方法,带有native关键字,底层调用c++程序
作用:返回哈希码
实际上就是一个Java对象的内存地址,经过哈希算法,得出的一个值
所以hashCode方法的执行结果可以看成是一个Java对象的内存地址
 */

内部类:


在类的内部又定义了一个新的类
/*
内部类分为:
1.实例内部类:类似于实例变量
2.静态内部类:类似于静态变量
3.局部内部类:类似于局部变量
4.匿名内部类(局部内部类的一种):用的最多
本节代码没讲到匿名内部类
 */

完整代码:

https://github.com/DeveloperWhite/Java

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值