Java基础篇--Number(包装)& Math (数学运算)类

目录

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包,是一个抽象类,定义了所有数值包装类的共同行为。它作为其他具体数值包装类(如IntegerDoubleLong等)的父类,提供了一些通用的方法和属性。通过使用Number及其子类,我们可以在需要处理数值的场景中更方便地进行装箱和拆箱操作。

Math类

Math类是一个工具类,提供了执行常见数学运算的静态方法。它包含了许多用于执行基本数学运算的方法,例如求绝对值、取最大/最小值、四舍五入、三角函数、指数和对数运算等。

以下是一些 Math 类的常用方法:

  1. abs(double a):返回参数的绝对值。
  2. ceil(double a):返回大于等于给定参数的最小整数,类型为双精度浮点型。
  3. floor(double a):返回小于等于给定参数的最大整数。
  4. rint(double a):返回与参数最接近的整数,返回类型为 double。
  5. round(float a):四舍五入,将原来的数字加上 0.5 后再向下取整,返回类型为 int。
  6. max(double a, double b):返回两个参数中的最大值。
  7. min(double a, double b):返回两个参数中的最小值。
  8. exp(double a):返回自然数底数e的参数次方。
  9. log(double a):返回参数的自然对数值。
  10. pow(double a, double b):返回第一个参数的第二个参数次方。
  11. sqrt(double a):求参数的算术平方根。
  12. sin(double a):求指定double类型参数的正弦值。
  13. cos(double a):求指定double类型参数的余弦值。
  14. tan(double a):求指定double类型参数的正切值。
  15. asin(double a):求指定double类型参数的反正弦值。
  16. acos(double a):求指定double类型参数的反余弦值。
  17. atan(double a):求指定double类型参数的反正切值。
  18. 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);
    }
}

编译以上程序,输出结果为:

猜你喜欢

转载自blog.csdn.net/m0_74293254/article/details/132249582