Skip to content

Java 数字与数学类

Java 不仅提供了基本数据类型(如 int, double)来处理数字,还提供了一系列的包装类 (Wrapper Classes) 以及一个强大的 Math 类,用于更复杂的操作和计算。

数字包装类 (Number Wrapper Classes)

对于每一种基本数据类型,Java 都提供了一个对应的包装类。这些类将基本类型“包装”成对象,从而赋予它们更多的功能,例如类型转换或参与面向对象的操作(如在泛型集合中存储)。

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

自动装箱与拆箱 (Autoboxing and Unboxing)

从 Java 5 开始,Java 引入了自动装箱和拆箱机制,使得基本类型和包装类之间的转换变得无缝。

  • 自动装箱 (Autoboxing): 自动将基本类型转换为对应的包装类对象。
  • 自动拆箱 (Unboxing): 自动将包装类对象转换为对应的基本类型。
java
// 自动装箱:int 被自动转换为 Integer
Integer myIntObject = 100;

// 自动拆箱:Integer 被自动转换为 int
int myIntPrimitive = myIntObject;

System.out.println(myIntObject.getClass().getName()); // 输出: java.lang.Integer
System.out.println(myIntPrimitive); // 输出: 100

包装类的常用方法

包装类提供了许多有用的静态方法和实例方法。

  • parseXXX(): 将字符串转换为对应的基本类型(例如 Integer.parseInt("123"))。
  • valueOf(): 将字符串或基本类型转换为对应的包装类对象。
  • toString(): 将数值转换为字符串。
  • 比较: equals() 用于比较两个对象的值是否相等;compareTo() 用于比较两个数值的大小。
java
public class WrapperClassExample {
    public static void main(String[] args) {
        // 使用 parseInt() 将字符串转换为 int
        String strNumber = "250";
        int number = Integer.parseInt(strNumber);
        System.out.println("解析后的整数: " + number);

        // 使用 valueOf() 获取 Integer 对象
        Integer anotherNumber = Integer.valueOf("500");

        // 使用 compareTo() 比较大小
        // 返回值 < 0: anotherNumber 小于 1000
        // 返回值 = 0: anotherNumber 等于 1000
        // 返回值 > 0: anotherNumber 大于 1000
        System.out.println(anotherNumber.compareTo(1000)); // 输出负数

        // 获取 Integer 的最大值和最小值常量
        System.out.println("Integer 最大值: " + Integer.MAX_VALUE);
        System.out.println("Integer 最小值: " + Integer.MIN_VALUE);
    }
}

Math

java.lang.Math 类包含了一系列用于执行基本数学运算的静态方法,如指数、对数、平方根和三角函数。你无需创建 Math 类的实例,直接通过类名调用其方法即可。

常用 Math 方法

  • Math.abs(x): 返回 x 的绝对值。
  • Math.max(a, b): 返回 ab 中的较大值。
  • Math.min(a, b): 返回 ab 中的较小值。
  • Math.sqrt(x): 返回 x 的正平方根。
  • Math.pow(a, b): 返回 ab 次幂 (a^b)。
  • Math.round(x): 返回 x 四舍五入后的 longint 值。
  • Math.ceil(x): 返回大于或等于 x 的最小整数(向上取整)。
  • Math.floor(x): 返回小于或等于 x 的最大整数(向下取整)。
  • Math.random(): 返回一个 [0.0, 1.0) 范围内的随机 double 值。

三角函数

  • Math.sin(a), Math.cos(a), Math.tan(a): 参数 a 是以弧度 (radians) 为单位的角度。
  • Math.toDegrees(rad): 将弧度转换为角度。
  • Math.toRadians(deg): 将角度转换为弧度。

示例:

java
public class MathExample {
    public static void main(String[] args) {
        double x = 25.0;
        double y = -10.5;

        System.out.println("25 的平方根是: " + Math.sqrt(x)); // 5.0
        System.out.println("2 的 8 次幂是: " + Math.pow(2, 8)); // 256.0
        System.out.println("-10.5 的绝对值是: " + Math.abs(y)); // 10.5
        System.out.println("对 4.3 向上取整: " + Math.ceil(4.3)); // 5.0
        System.out.println("对 4.7 向下取整: " + Math.floor(4.7)); // 4.0
        System.out.println("对 4.5 四舍五入: " + Math.round(4.5)); // 5

        // 生成一个 1 到 10 之间的随机整数
        int randomNumber = (int)(Math.random() * 10) + 1;
        System.out.println("1-10 的随机数: " + randomNumber);

        // 计算 90 度的正弦值
        double angleInDegrees = 90.0;
        double angleInRadians = Math.toRadians(angleInDegrees);
        System.out.println("sin(90度) = " + Math.sin(angleInRadians)); // 1.0
    }
}

本站内容仅供学习和研究使用。