java.lang.Math类和java.Math类之间有什么区别

时间:2014-09-27 18:25:53

标签: java numbers bigdecimal java.lang.class

我想弄清楚BigDecimal类所在的'Library'。当我读到引用信息时,它说:

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有关系吗?

2 个答案:

答案 0 :(得分:1)

首先:是的,它存在于那里...... 只需查看文档

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

第三: java.lang.Math

  

包含执行基本数字操作的方法,例如   基本指数,对数,平方根和三角函数   功能

在BigDecimal"数学"的背景​​下只是一个包名。 java.lang.Math是一个java类!

考虑,因为它是您计算机中的文件夹。它是一个名称空间'一种组织类和接口的方法。 包 java.math 包含与数学相关的类,如BigDecimal.java和BigInteger.java

虽然类java.lang.Math是一个实际的Java class,它位于packae' java.lang'

所以 BigDecimal.java Math.java 都是在两个不同的' 中驻留的Java类(想到文件夹)即使他们同时也是“数学”#34;相关的。

答案 1 :(得分:1)

你说的是包,而不是图书馆。

包是许多类文件的地方。一个类有两个名字。一个简单的名称Math和一个限定名称,包名为后缀java.lang.Math。这使得Java开发人员可以在他们的程序中使用许多具有相同简单名称的类,例如" Stream"例如。许多不同的"流"可以共享相同的简单名称,但如果愿意,可以在逻辑上分组到不同的名称空间。包不能映射到文件夹,但对于大多数Java项目,它们的映射方式,因此您可以将此实践称为事实上的标准"。

库基本上是一个包含已编译类文件的文件,因此您可以在程序中使用这些Java类型,而无需重新发明轮子。

Java Development Kit(JDK)为您提供了许多库,最值得注意的是rt.jar。在我的Windows x64计算机上,它位于:

  

C:\ Program Files \ Java \ jdk1.8.0_20 \ jre \ lib

如果您使用任何知道如何打开ZIP文件的程序打开rt.jar,您将在子文件夹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());