JavaAPI探索与继承多态知识详解
立即解锁
发布时间: 2025-08-18 01:34:24 阅读量: 2 订阅数: 8 


Head First Java: Fun and Engaging Learning Experience
# Java API探索与继承多态知识详解
## 1. 如何发现Java API
在使用Java库时,我们通常想了解两件事:一是库中有哪些可用的特性(即有哪些类);二是如何使用这些特性(找到一个类后,知道它能做什么)。以下是两种常见的探索方法:
### 1.1 翻阅参考书籍
翻阅参考书籍是了解Java库内容的好方法。通过浏览页面,你可能会偶然发现一个看起来很有用的包或类。
### 1.2 使用HTML API文档
Java自带了一套很棒的在线文档,即Java API。你或你的集成开发环境(IDE)也可以将这些文档下载到硬盘上,以防在最糟糕的时候网络连接中断。API文档是获取包详细信息以及包中类和接口提供的功能(如方法和功能)的最佳参考。
需要注意的是,文档的外观会根据你使用的Java版本而有所不同,所以要确保查看的是你所使用Java版本的文档。
- **Java 8及更早版本**:文档链接为[https://docs.oracle.com/javase/8/docs/api/index.html](https://docs.oracle.com/javase/8/docs/api/index.html)。你可以通过以下两种方式浏览这些文档:
- **自上而下**:从左上角的列表中找到你感兴趣的包,然后深入查看。
- **先找类**:在左下角的列表中找到你想了解更多信息的类,然后点击它。主面板将显示你所查看内容的详细信息。如果你选择一个包,它将提供该包的摘要信息以及类和接口的列表;如果你选择一个类,它将显示该类的描述以及类中所有方法的详细信息,包括它们的功能和使用方法。
- **Java 9及更高版本**:Java 9引入了Java模块系统,JDK现在被划分为多个模块,这些模块将相关的包组合在一起,这使得按功能分组更容易找到你感兴趣的类。所有目前涉及的类都在`java.base`模块中,它包含了像`java.lang`和`java.util`这样的核心Java包。你可以通过以下两种方式浏览这些文档:
- **自上而下**:找到一个看起来涵盖了你所需功能的模块,查看其包,然后从包深入到其类。
- **搜索**:使用右上角的搜索框直接转到你想阅读的方法、类、包或模块。
### 1.3 使用类文档
无论你使用的是哪个版本的Java文档,它们在显示特定类的信息时都有相似的布局。例如,你在参考书中发现了`java.util`包中的`ArrayList`类,书中对它有一些介绍,但你还需要了解更多关于其方法的信息。在参考书中你可能会找到`indexOf()`方法,但仅知道它接受一个对象并返回该对象的索引(一个整数)是不够的,你还需要知道如果对象不在`ArrayList`中会发生什么。仅查看方法签名无法得知这一点,但API文档通常会告诉你。API文档显示,如果对象参数不在`ArrayList`中,`indexOf()`方法将返回 -1。这样,我们就可以用它来检查对象是否在`ArrayList`中,同时如果对象存在的话还能获取其索引。
### 1.4 相关练习
#### 1.4.1 Code Magnets
你能否重构代码片段,以创建一个能产生以下输出的Java程序?要完成这个练习,你需要一个新的信息:如果你查看`ArrayList`的API,会发现有一个接受两个参数的`add`方法:`add(int index, Object o)`,它允许你指定将对象添加到`ArrayList`中的位置。以下是示例代码:
```java
import java.util.ArrayList;
public class ArrayListMagnet {
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<String>();
a.add(0, "zero");
a.add(1, "one");
a.add(2, "two");
a.add(3, "three");
printList(a);
if (a.contains("three")) {
a.add("four");
}
a.remove(2);
printList(a);
if (a.indexOf("four") != 4) {
a.add(4, "4.2");
}
printList(a);
if (a.contains("two")) {
a.add("2.2");
}
printList(a);
}
public static void printList(ArrayList<String> list) {
for (String element : list) {
System.out.print(element + " ");
}
System.out.println();
}
}
```
#### 1.4.2 JavaCross
这是一个填字游戏,所有的单词都与Java相关(除了一个干扰项)。提示:不确定时,记住`ArrayList`。以下是填字游戏的线索:
| 方向 | 序号 | 线索 |
| ---- | ---- | ---- |
| 横向 | 1 | I can’t behave |
| 横向 | 6 | Or, in the courtroom |
| 横向 | 7 | Where it’s at baby |
| 横向 | 9 | A fork’s origin |
| 横向 | 12 | Grow an ArrayList |
| 横向 | 13 | Wholly massive |
| 横向 | 14 | Value copy |
| 横向 | 16 | Not an object |
| 横向 | 17 | An array on steroids |
| 横向 | 19 | Extent |
| 横向 | 21 | 19’s counterpart |
| 横向 | 22 | Spanish geek snacks(与Java无关) |
| 横向 | 23 | For lazy fingers |
| 横向 | 24 |
0
0
复制全文
相关推荐









