你说的是包,而不是库。
包是存放许多类文件的地方。一个类有两个名称。一个简单名称 ,Math
和一个以包为后缀的限定名称java.lang.Math
. 这使得 Java 开发人员可以在他们的程序中使用许多具有相同简单名称的类,例如“Stream”。许多不同的“流”可能共享相同的简单名称,但在逻辑上分组到不同的名称空间或包中(如果您愿意)。包不能映射到文件夹,但对于大多数 Java 项目,它们就是这样映射的,因此您可以将这种做法称为“事实上的标准”。
库基本上是一个包含已编译类文件的文件,因此您可以在程序中使用这些 Java 类型,而无需重新发明轮子。
Java 开发工具包 (JDK) 为您提供了许多库,其中最引人注目的是rt.jar
. 在我的 Windows x64 机器上,它位于:
C:\Program Files\Java\jdk1.8.0_20\jre\lib
如果您rt.jar
使用任何知道如何打开 ZIP 文件的程序打开,您会Math.class
在子文件夹中找到已编译的类文件./java/lang/
。
您的前两个问题的答案都是肯定的。让代码来判断:
// package java.lang, Java Platform API Specification, version 1.8
System.out.println(Math.class.getPackage());
// class java.lang.Number
System.out.println(BigDecimal.class.getSuperclass());