java 源码阅读day01

 感觉之前对java的了解不够深入,所以往后会不定期的阅读java源码来提升对java语言的理解。

我对java源码阅读的计划路线是:

1.java工具类,java.util里的类的源码,如下图,这些类中可能还涉及到一些算法,例如排序算法等

2.然后是core包,也就是String、StringBuffer等。

3.Java IO 包,是对继承和接口运用得最优雅的案例。

4.java虚拟机,jvm的源码。

首先从java工具类开始:

1.Objects类(静态工具类)

首先是Objects类不是Object,Objects是final类,final类不可被继承,final类中的方法都隐式的是final方法。

Objects的构造函数是私有的,所以不能被实例化。

第一个方法:

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

首先==判断的是对象的内存地址,如果对象内存地址一样则直接返回true。如果对象地址不同,则a.equlas调用了Object的equlas方法。对于基本类型和引用类型可以有自己的实现方法,例如Double会比较数据类型是否一致等。(所以这里||前后的两个条件都是有用的!)

第二个方法:

public static boolean deepEquals(Object a, Object b) {
    if (a == b)
        return true;
    else if (a == null || b == null)
        return false;
    else
        return Arrays.deepEquals0(a, b);
}

和deepEquals区别在于如果有一个对象是null则返回false,同时增加了对数组对象的判断。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值