所有的java框架都是来至于JDK中的扩展。只是做扩大化当你接触框架是觉得很神奇其实jdk中就早就已经存在。
第一级别:精读源码
- java.io
- java.lang
- java.util
这些源码还是需要看一遍,因为经常性的用到,方便开发时候只有有这样的工具才会提高开发效率,比起百度来的更准确和实用性。
精读源码,这是要求最高的级别。但是,要求你精读源码并不意味着,这些类就是最重要的。
看这些源码的目的,更多是为了增加你的阅读代码能力。像Exception和Error这一类的,就不用读源码了
基本上都是你最常用的了。lang包不用说了,你随便写点啥都得用到,io包和util包也是你平时读写文件和使用数据结构必不可少的。
第二级别:深刻理解
- java.lang.reflect
- java.net
- javax.net.*
- java.nio.*
- java.util.concurrent.*
看了没用。而是这些类的源码往往非常复杂,要了解清楚细节花费的时间是非常多的,因此,花费巨量的时间去研究这么复杂的代码其实没必要的。
不过,如果你在使用这些类的过程中,遇到了问题,果断看看源码解决你的问题吧,这是最适合的看源码的契机了。
遇到了问题不要百度和谷歌,看源码能解决你90%的问题。
此外,看到这四个包的名字,不难看出它们各自代表了什么。reflect代表了反射,net代表了网络IO,nio代表了非阻塞io,concurrent代表了并发。
这四个家伙可以说每一个都够面试官问上半天的,而且,这四个包的内容,如果你要深刻理解的话,其实还牵扯了很多其它的知识。
举个例子,反射你要了解清楚的话,你是不是要搞明白JVM的类加载机制?网络IO要搞清楚的话,你是不是要清楚TCP/IP和HTTP、HTTPS?包括并发包,如果你要搞清楚的话,是不是要了解并发的相关知识?
因此,这四个包要彻底搞清楚,还是需要花费一定时间和精力的。
这四个包用的好不好,基本决定了一个Java程序员所处的档次。
第三级别:会用即可
- java.lang.annotation
- javax.annotation.*
- java.lang.ref
- java.math
- java.rmi.*
- javax.rmi.*
- java.security.*
- javax.security.*
- java.sql
- javax.sql.*
- javax.transaction.*
- java.text
- javax.xml.*
- org.w3c.dom.*
- org.xml.sax.*
- javax.crypto.*
- javax.imageio.*
- javax.jws.*
- java.util.jar
- java.util.logging
- java.util.prefs
- java.util.regex
- java.util.zip
会用即可,这个级别的要求很显然了,就是会用就可以了。这些包大部分都是在特定的情况下会用到,但却不会时刻用到。
就像sql包和transaction包,就是操作数据库时用到的。而xml、dom和sax这些,都是操作xml时用到的。其它的包也都是类似的,有使用注解时用的,有远程方法调用时用的,也有涉及到加密时用到的等等。
这些包在面试时一般不会问到,所以它们的重要性自然要低很多,而且也不太需要刻意的去学,用到了研究一下,会用即可。