在 Java 中,Number 类和 Math 类是两个常用的类,它们提供了用于数值运算和数学计算的丰富功能。Number 是所有数值类的超类,而 Math 类提供了大量的数学函数,用于处理数学相关的计算。


目录

  1. Number 类概述
  2. Number 类的常见子类
  3. Math 类概述
  4. Math 类的常用方法
  5. Number 类与 Math 类的区别
  6. 参考资料
  7. 出站链接

1. Number 类概述

Number 是 Java 中的一个抽象类,位于 java.lang 包中。它是所有数值类型类(如 IntegerDoubleFloat 等)的父类。Number 类的作用是提供一种将所有基本数值类型包装成对象的方式,它本身并不能直接用于实例化对象。

Number 类定义了用于获取数值的各种方法,如:

  • intValue():返回数值的 int 表示。
  • longValue():返回数值的 long 表示。
  • floatValue():返回数值的 float 表示。
  • doubleValue():返回数值的 double 表示。

这些方法允许从 Number 的子类(如 IntegerDouble)中获取相应类型的数值。

示例:

public class NumberExample {
    public static void main(String[] args) {
        Number num = new Integer(10);  // 创建 Integer 对象
        System.out.println("intValue: " + num.intValue());
        System.out.println("longValue: " + num.longValue());
        System.out.println("floatValue: " + num.floatValue());
        System.out.println("doubleValue: " + num.doubleValue());
    }
}

输出:

intValue: 10
longValue: 10
floatValue: 10.0
doubleValue: 10.0


2. Number 类的常见子类

Number 类有多个常见的子类,这些子类通常用于处理不同类型的数字。常见的子类包括:

  • Integer:封装 int 类型的数值。
  • Double:封装 double 类型的数值。
  • Float:封装 float 类型的数值。
  • Long:封装 long 类型的数值。
  • Short:封装 short 类型的数值。
  • Byte:封装 byte 类型的数值。

示例:

public class NumberSubclasses {
    public static void main(String[] args) {
        Number intNum = new Integer(5);
        Number doubleNum = new Double(5.5);

        System.out.println("Integer value: " + intNum.intValue());
        System.out.println("Double value: " + doubleNum.doubleValue());
    }
}

输出:

Integer value: 5
Double value: 5.5


3. Math 类概述

Math 类是 Java 提供的一个工具类,位于 java.lang 包中。它包含了一些静态方法,这些方法提供了各种数学操作,如常见的三角函数、对数函数、平方根、绝对值、最大值和最小值等。

Math 类的所有方法都是静态的,因此可以通过类名直接调用,而无需实例化 Math 类。


4. Math 类的常用方法

Math 类提供了许多常用的数学方法,下面是一些常见方法的介绍:

  • abs(x):返回 x 的绝对值。
  • max(x, y):返回 xy 中的最大值。
  • min(x, y):返回 xy 中的最小值。
  • sqrt(x):返回 x 的平方根。
  • pow(x, y):返回 xy 次幂。
  • round(x):将 x 四舍五入为最接近的整数。
  • random():返回一个大于等于 0.0 且小于 1.0 的随机 double 值。
  • sin(x)cos(x)tan(x):分别返回角度 x 的正弦、余弦和正切值。

示例:

public class MathExample {
    public static void main(String[] args) {
        System.out.println("绝对值: " + Math.abs(-5.5));  // -5.5 的绝对值
        System.out.println("最大值: " + Math.max(5, 10));  // 5 和 10 的最大值
        System.out.println("最小值: " + Math.min(5, 10));  // 5 和 10 的最小值
        System.out.println("平方根: " + Math.sqrt(25));  // 25 的平方根
        System.out.println("幂: " + Math.pow(2, 3));  // 2 的 3 次方
        System.out.println("四舍五入: " + Math.round(2.5));  // 四舍五入
        System.out.println("随机数: " + Math.random());  // 随机数
    }
}

输出:

绝对值: 5.5
最大值: 10
最小值: 5
平方根: 5.0
幂: 8.0
四舍五入: 3
随机数: 0.5479816826334827  // 每次运行可能不同


5. Number 类与 Math 类的区别

特性NumberMath
类型Number 是所有数值类的父类,提供了方法来获取数值的不同表示(如 intValue()longValue())。Math 是一个工具类,提供了静态数学方法来进行各种数学计算。
用途用于包装数值类型,允许以对象的形式表示数值。用于执行数学操作,如计算平方根、最大值、最小值等。
实例化Number 类不能直接实例化,它是一个抽象类。其子类(如 IntegerDouble)可以实例化。Math 类不能实例化,因为它的所有方法都是静态的。
方法提供获取数值的不同类型的方法(如 intValue()doubleValue())。提供数学运算的方法(如 abs()max()sqrt() 等)。

参考资料


出站链接