目录
Number类
扩展小知识
Math类
实例
Number类
Java中的Number类是一个抽象类,它是所有包装类(如Integer、Double、Long等)的父类。这个类提供了将基本数据类型(如int、double、long等)封装为对象,并在对象中进行数字值的操作。
| 包装类 | 基本数据类型 | 
|---|---|
| Boolean | boolean | 
| Byte | byte | 
| Short | short | 
| Integer | int | 
| Long | long | 
| Character | char | 
| Float | float | 
| Double | double | 
Number 类的一些常用方法包括:
- xxxValue():将 Number 对象转换为对应数据类型的值。(xxx为基本数据类型)
- compareTo():将 Number 对象与参数进行比较。
- equals():判断 Number 对象是否与参数相等。
- valueOf():返回指定内置数据类型的 Number 对象。
- toString():以字符串形式返回值。
- parseInt():将字符串解析为 int 类型。
这些方法允许你在不同的数值类型之间进行转换,并且每个子类需要实现这些方法以提供适当的转换行为。
扩展小知识
在Java中,将基本数据类型转换为其对应的包装类对象的过程称为装箱(Boxing),而将包装类对象转换为基本数据类型的过程称为拆箱(Unboxing)。
- 编译器会自动处理装箱和拆箱的过程,在需要时将基本类型和包装类之间进行转换。这样就可以像操作对象一样使用基本数据类型,同时还可以享受到包装类提供的额外功能,提高代码的简洁性和可读性,使操作更加便捷。
- 手动装箱和拆箱需要显式地调用相应的方法进行转换,相比于自动装箱和拆箱,代码更加繁琐。但手动装箱和拆箱提供了更精确的控制,适用于一些特殊情况下的操作。
// 自动装箱和拆箱示例
int num = 10;
Integer wrappedNum = num; // 自动装箱,将int类型的num装箱为Integer对象
double value = 3.14;
Double wrappedValue = value; // 自动装箱,将double类型的value装箱为Double对象
boolean flag = true;
Boolean wrappedFlag = flag; // 自动装箱,将boolean类型的flag装箱为Boolean对象
System.out.println(wrappedNum);    // 输出:10
System.out.println(wrappedValue);  // 输出:3.14
System.out.println(wrappedFlag);   // 输出:true
int unwrappedNum = wrappedNum; // 自动拆箱,将Integer对象wrappedNum拆箱为int类型的unwrappedNum
double unwrappedValue = wrappedValue; // 自动拆箱,将Double对象wrappedValue拆箱为double类型的unwrappedValue
boolean unwrappedFlag = wrappedFlag; // 自动拆箱,将Boolean对象wrappedFlag拆箱为boolean类型的unwrappedFlag
System.out.println(unwrappedNum);    // 输出:10
System.out.println(unwrappedValue);  // 输出:3.14
System.out.println(unwrappedFlag);   // 输出:true
-----------------------------------------------------------------------------------------
// 手动装箱和拆箱示例
int num = 10;
Integer wrappedNum = Integer.valueOf(num); // 手动装箱,使用valueOf方法将int类型的num装箱为Integer对象
double value = 3.14;
Double wrappedValue = Double.valueOf(value); // 手动装箱,使用valueOf方法将double类型的value装箱为Double对象
boolean flag = true;
Boolean wrappedFlag = Boolean.valueOf(flag); // 手动装箱,使用valueOf方法将boolean类型的flag装箱为Boolean对象
System.out.println(wrappedNum);    // 输出:10
System.out.println(wrappedValue);  // 输出:3.14
System.out.println(wrappedFlag);   // 输出:true
int unwrappedNum = wrappedNum.intValue(); // 手动拆箱,使用intValue方法将Integer对象wrappedNum拆箱为int类型的unwrappedNum
double unwrappedValue = wrappedValue.doubleValue(); // 手动拆箱,使用doubleValue方法将Double对象wrappedValue拆箱为double类型的unwrappedValue
boolean unwrappedFlag = wrappedFlag.booleanValue(); // 手动拆箱,使用booleanValue方法将Boolean对象wrappedFlag拆箱为boolean类型的unwrappedFlag
System.out.println(unwrappedNum);    // 输出:10
System.out.println(unwrappedValue);  // 输出:3.14
System.out.println(unwrappedFlag);   // 输出:true
Number类属于java.lang包,是一个抽象类,定义了所有数值包装类的共同行为。它作为其他具体数值包装类(如Integer、Double、Long等)的父类,提供了一些通用的方法和属性。通过使用Number及其子类,我们可以在需要处理数值的场景中更方便地进行装箱和拆箱操作。
Math类
Math类是一个工具类,提供了执行常见数学运算的静态方法。它包含了许多用于执行基本数学运算的方法,例如求绝对值、取最大/最小值、四舍五入、三角函数、指数和对数运算等。
以下是一些 Math 类的常用方法:
- abs(double a):返回参数的绝对值。
- ceil(double a):返回大于等于给定参数的最小整数,类型为双精度浮点型。
- floor(double a):返回小于等于给定参数的最大整数。
- rint(double a):返回与参数最接近的整数,返回类型为 double。
- round(float a):四舍五入,将原来的数字加上 0.5 后再向下取整,返回类型为 int。
- max(double a, double b):返回两个参数中的最大值。
- min(double a, double b):返回两个参数中的最小值。
- exp(double a):返回自然数底数e的参数次方。
- log(double a):返回参数的自然对数值。
- pow(double a, double b):返回第一个参数的第二个参数次方。
- sqrt(double a):求参数的算术平方根。
- sin(double a):求指定double类型参数的正弦值。
- cos(double a):求指定double类型参数的余弦值。
- tan(double a):求指定double类型参数的正切值。
- asin(double a):求指定double类型参数的反正弦值。
- acos(double a):求指定double类型参数的反余弦值。
- atan(double a):求指定double类型参数的反正切值。
- random():返回一个随机数,范围在0.0到1.0之间。
通过使用Math类的这些方法,可以执行基本的数学运算,例如绝对值计算、取最大/最小值、四舍五入、三角函数计算以及指数和对数运算等。
这些只是Number类和Math类提供的一些常用方法示例,实际上还有其他更多的方法可供使用。它们在Java编程中非常有用,并且可以轻松处理数字和执行数学计算。
实例
public class MyClass {
    public static void main(String[] args) {
        // 使用 Number 类的方法示例
        Number number = 10.5;
        // 转换为 int 类型
        int intValue = number.intValue();
        System.out.println("intValue: " + intValue);
        // 比较两个数是否相等
        boolean isEqual = number.equals(10.5);
        System.out.println("isEqual: " + isEqual);
        // 转换为字符串
        String stringValue = number.toString();
        System.out.println("stringValue: " + stringValue);
        // 使用 Math 类的方法示例
        double x = 2.3;
        double y = 4.7;
        // 返回较大的数
        double max = Math.max(x, y);
        System.out.println("max: " + max);
        // 返回较小的数
        double min = Math.min(x, y);
        System.out.println("min: " + min);
        // 计算绝对值
        double absValue = Math.abs(-10.8);
        System.out.println("absValue: " + absValue);
        // 对数运算
        double logValue = Math.log(2.0);
        System.out.println("logValue: " + logValue);
        // 平方根
        double sqrtValue = Math.sqrt(16.0);
        System.out.println("sqrtValue: " + sqrtValue);
        // 随机数生成
        double randomValue = Math.random();
        System.out.println("randomValue: " + randomValue);
    }
}
编译以上程序,输出结果为:




















