0

我试图找出 BigDecimal 类所在的“库”。当我阅读参考信息时,它说:

java.lang.Object
     java.lang.Number
          java.math.BigDecimal

我不完全明白。我熟悉 java.lang.Math 类。我认为这是完全不同的——所以这是我的子问题:

首先 - 我是否正确地说 java Math 类驻留在 java.lang 库中

第二 - java.math.BigDecimal 是否扩展了 java.lang.Number,如果没有,它们是如何相关的?

第三 - java.lang.math 和 java.math 有关系吗?

4

2 回答 2

2

第一:是的,它就在那里……看看文档

第二:是的,它扩展了抽象类 Number.java。再次查看文档。

第三: java.lang.Math

包含执行基本数值运算的方法,例如初等指数、对数、平方根和三角函数。

在 BigDecimal 的上下文中,“数学”只是一个包名。 java.lang.Math是一个java类!

考虑一个,因为它是您计算机中的一个文件夹。这是一种将类和接口组织在一起的“命名空间”。包java.math包含数学相关的类,如 BigDecimal.java 和 BigInteger.java

而类 java.lang.Math 是一个实际的Java 类,它驻留在包“java.lang”中

所以BigDecimal.javaMath.java都是 Java 类,它们位于两个不同的“包”(想想文件夹)中,即使它们都与“数学”相关。

于 2014-09-27T18:34:42.460 回答
2

你说的是包,而不是库。

包是存放许多类文件的地方。一个类有两个名称。一个简单名称 ,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());
于 2014-09-27T19:00:41.700 回答