Math类直接继承Object类:
public final class Math extends Object
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
java.lang包内有一个名为StrictMath类,StrictMath类和Math类有很多同名方法。在默认情况下,很多 Math 类方法直接调用 StrictMath中的等价方法来完成。
为了确保 Java 程序的可移植性,StrictMath类中的函数根据fdlibm(免费发布的数学库)定义,在不同平台执行都能获得完全一样的结果,多次运行也能产生一样的结果。Math类不像StrictMath类那样严格,允许浮点数最后一两个位数有误差,以此换来性能的提升。
对比Math类的源码和StrictMath类的源码
StrictMath类:
public final class StrictMath
{
public static native double sin(double a);//被native修饰的方法称为本地方法,用非Java代码(比如C语言代码)实现。
}
Math类:
public final class Math
{
public static double sin(double a)
{
return StrictMath.sin(a);
}
}
所以如果希望拥有更好的性能,就使用Math类(Math类更常用些);但在某些情况下,得到一个完全可靠、可预测的结果更重要些,那就得用StrictMath类。
-------------------------------------分割线--------------------------------------------------------
下面进入正题,列出比较常用的Math类API。
注:Math类里的域和方法都是静态的,也就是调用的时候不用创建对象,直接Math.xxx调用即可。
--------------------------------------分割线------------------------------------------------------
Math.E | e:自然对数的底数,double类型。 2.718281828459045 |
Math.PI | π:圆的周长与直径之比,double类型。 3.141592653589793 |
static double abs(double a) | 返回 a 的绝对值。 例: abs(-4.3) = 4.3 |
static double cos(double a) | 参数是以弧度表示的角,返回该角的余弦值。 例:cos(Math.PI) = -1 |
static double sin(double a) | 参数是以弧度表示的角,返回该角的正弦值。 例:sin(Math.PI / 2) = 1 |
static double tan(double a) | 参数是以弧度表示的角,返回该角的正切值。 例:tan(Math.PI / 4) = 1 |
static double atan2(double y, double x) | 将矩形坐标 (x, y) 转换成极坐标 (r, theta),返回所得角 theta。游戏设计用的多。 例:atan2(1,1) = 45 |
static double ceil(double a) | 返回大于或者等于 a 的最小整数,即向上取整。 例:ceil(11.8) = 12,可理解为天花板。 |
static double floor(double a) | 返回小于或者等于 a 的最小整数,即向上取整。 例:ceil(11.8) = 11,可理解为地板。 |
static double exp(double a) | 返回自然数 e 的 a 次幂的值。 例:exp(2) = Math.E * Math.E |
static double log(double a) | 返回 a 的自然对数(即底数是 e)。 例:log(Math.E * Math.E) = 2 |
static double log10(double a) | 返回 a 的底数为 10 的对数。 例:log10(100) = 2 |
static double max(double a, double b) | 返回两个 a、b 中较大的一个。 例:max(5.7, 6,3) = 6.3 |
static double min(double a, double b) | 返回两个 a、b 中较大的一个。 例:min(5.7, 6,3) = 5.7 |
static double pow(double a, double b) | 返回 a 的 b 次方。 例:pow(2,3) = 8 |
static long round(double a) | 返回最接近 a 的 整数。可用于四舍五入。 例:round(3.3) = 3 |
static double signum(double d) | 返回参数的符号函数; 例:signum(0) = 0; signum(0.01) = 1; signum(-0.01) = -1; |
static double sqrt(double a) | 返回的 a 的正平方根。 例:sqrt(4) = 2 |
static double toDegrees(double radians) | 将用弧度表示的角转换为近似相等的用角度表示的角。 例:toDegrees(Math.Pi) = 180 |
static double toRadians(double degrees) | 将用角度表示的角转换为近似相等的用弧度表示的角。 例:toRadians(180) = Math.PI |