JAVA JDK 源码学习

JAVA JDK 源码学习 ,以1.8为例,按照下面图片顺序依次学习: applet ,awt,beans,io,lang,math,net,nio,rmi,security,sql,text,time,util

第一课,广泛认知它们

1 applet

Java applet 为使用Java语言编写的一些程序,可以直接插入到网页之中。

不建议去学,已经被淘汰了

2 awt

java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。

个人觉得用途不大,谁会用java 画图?

3 beans

java 的底层,没读懂

4 io

Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。

5 lang

java.lang包是真正的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。

按理说是要最先学的。

6 math

java.math提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。

这个包里内容很少就是为了让java更精确,可以单独出来学

7 net

java.net是Java技术相关的社区网站,它还提供了基于网络的一个Java项目的源代码库。

网路链接相关的类都在这里。可它依赖了io /util等等很多包,需要靠后学。

8 nio

java.nio 是指非阻塞式IO , 它为java 提供非阻塞式的高伸缩性网络.

依赖io,需要靠后学

9 rmi

RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。

在这个包,丰富了JAVA 的面向对象,可以单独出来学

10 security

java.security为java提供安全。建议单独出来靠后学。

11 sql

java 访问数据库的底层,可以单独学。

不是很常用了,被mybatis 等框架代替了

12 text

java.text,提供一些用于迭代文本的类,一些用于格式化和分析的类,一些用于整理字符串的类

13 time

定义了一些原生的date ,可以先学。

14 util

包含集合框架、遗留的 collections 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包

实际开发中用的最多的一个包,要重点学。

第二课,开始逐一学习

1 java.lang.Object

如图,它有下面几个方法.

(1) equals 

需要知道的时,如果不重写这个equals 那么这里就是== 

  public boolean equals(Object obj) {
        return (this == obj);
    }

string 类的equals. 是先比地址再比value .

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

 

 

 

附录1: 统计类数量的代码段

这是看rt包里 java/util 里类的数量的方法。

 public static void main(String[] args) throws IOException {
        JarFile jarFile = new JarFile("C:\\Program Files\\Java\\jdk1.8.0_60\\jre\\lib\\rt.jar");
        Enumeration<JarEntry> jarEntries = jarFile.entries();
        AtomicInteger num = new AtomicInteger();
        jarFile.stream().forEach(m->{
            if(m.getName().startsWith("java/util") && !m.getName().contains("$") && m.getName().endsWith("class")){
                System.out.println(m.getName());
                num.getAndIncrement();
            }
        });
        System.out.println("共有类:"+num.toString());
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值