为什么使用 Java 的 API 文档
首先要先知道 Java 的 API 文档是什么?对于 API 文档来说, 主要是为了让开发者可以方便的查阅 Java 相关的应用程序接口。根据提供的接口进行开发编程。说白了就是解脱我们暂时记不住知识点的初级开发者。当你熟悉之后还会使用 API 文档的内容, 但是方式会有很多差别。
本系列教程主要是基于 Java 17 的版本, JDK 17 对应的文档地址就是, 对于 Java 的 API 文档, 一般默认说的是Java SE。
官方文档地址:https://docs.oracle.com/en/java/javase/17/
官方 API 地址:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
这个是在线的文档地址。 除了在线浏览的途径, 还可以支持下载到本地。 使用离线文档, 这样的话, 对于我们开发和学习比较友好。 毕竟外网总会有那么一点慢慢的,卡卡的。
离线下载地址为:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
点击 Download
进行下载离线版本。
解压之后, 可以看到文档详细内容。 进入到 docs 目录。 index.html 就是文档主页。 直接用浏览器打开就好了。
打开之后的效果, 和上面在线的 API 文档是一致的。推荐使用该方式进行查看 API。用于开发和调试。
我们学习的时候, 不可能是从 API 文档的最顶部往下学习。 这样学习的效率太低。 就相当于你要背单词从 abandon 开始。然后再也走不出去。
从 JDK 9 开始,JDK 都是模块化的工程。 所以 Java 开发者就根据功能而已进行了模块化的划分。
学习任何一个技术, 首先就是要看技术的相关介绍, 并且是大局观的介绍。 只有这样你才能知道这个技术是什么, 能做什么, 能做成什么样。 看文档也是。
我们简单的翻译一下文档:
一开始说了本文档主要包含两部分的内容。
一部分是 Java SE,另一个部分是:JDK
Java SE
Java 平台标准版 (Java SE) API 定义了用于通用计算的核心 Java 平台。 这些 API 位于名称以 java 开头的模块中。
Java SE 主要包含以下模块:
JDK
Java 开发工具包 (JDK) API 特定于 JDK,需要注意的是该模块不一定在 Java SE 平台的所有实现中都可用。也就是说不同版本的 JDK 针对这些模块接口实现是不一致的。使用的时候需要注意。 这些 API 位于名称以 jdk 开头的模块中。
JDK 主要包含以下模块:
除了这两部分, 还有一部分是只有一个内容就是和智能卡相关的。
需要注意的是:当前描述适用于 JDK 11+ 的版本。 主要以 JDK 17 的版本进行讲解描述。
上面说了这么多, 都是以大局观的方面讲的。 因为还没有接触很多知识点。 所以在后期会在讲解到某个具体的知识点的时候, 进行详细说明。
在没有模块化之前, JDK 下面紧跟着的就是 package。有了模块化以后,目录结构就是先是 module, 接着是 package。 然后才是 package 下的某个具体的类。具体如何使用模块化, 后续会有具体的章节进行讲解。 这里先不再展开。一键... 咳咳咳。继续, 继续。
几种检索方式:
index: 这里可以查看指定字符开头的类和接口。
如果想看所有的。 可以使用 All Classes and Interfaces 。
打开之后的页面为:
这个时候, 可以通过右侧的 search 进行搜索。 如果只记得某个类的开头, 或者其中一部分。 可以使用这个快速的定位到你需要的内容上。
我们看一下之前错误的提示异常类。 NoClassDefFoundError
从这可以看到他是在 java.lang 的下面。 并且 java.lang 是在 java.base 的模块下, 一次记不住没关系, 多看多练几次就熟能生巧了。
里面有详细的说明信息, 因为一个新技术出现肯定是自己官方的语言。 所以中文版的,就要等等了。 或者你也来参与一下? 翻译一下这些知识的中文版本。 也算是一个技术输出了吧?英文不好也可能使用翻译工具进行查阅。 看多了, 虽然不会读, 也能看懂了。
可以看到这个类从 1.0 版本就存在了。
并且有对应的详细说明:
如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且找不到类的定义,则抛出该异常。 编译当前正在执行的类时,搜索到的类定义存在,但无法找到该定义也会抛出该异常。 这就是初学者未使用 IDE 之前经常会出现的一个问题。
文档的使用就暂时搞一段落。后续具体的知识点在进行学习查看。 关注我。 后续更多全栈的内容。