Java Number 与 Math 类

基本类型 int、double 不是对象,不能放进集合,也缺少现成的计算方法。Java 为每种基本类型都准备了对应的"包装类",再加上功能丰富的 Math 类,数值处理才完整又方便。

包装类一览

包装类把基本类型"包装"成对象,位于 java.lang 包,无需 import:

基本类型包装类基本类型包装类
byteBytecharCharacter
shortShortbooleanBoolean
intIntegerfloatFloat
longLongdoubleDouble

自动装箱与拆箱

JDK5 起基本类型与包装类可自动转换:装箱是"基本类型 → 包装对象",拆箱反之。

public class BoxDemo {
    public static void main(String[] args) {
        Integer a = 100;        // 自动装箱:int → Integer
        int b = a + 1;          // 自动拆箱:Integer → int
        System.out.println(b);  // 输出:101
    }
}

Integer 常用方法

parseInt 把字符串解析成 int,valueOf 返回包装对象,toString 转回字符串。

// 片段需放进 main 方法中运行
int x = Integer.parseInt("123");       // 字符串 → int
Integer y = Integer.valueOf(456);      // int → Integer 包装对象
String s = Integer.toString(789);      // int → String
System.out.println(x + 100);           // 输出:223(按数值相加)
System.out.println(s + 100);           // 输出:789100(按字符串拼接)

字符串与数字互转

其他包装类用法一致:Double.parseDouble、Long.parseLong、Boolean.parseBoolean 等。

// 片段需放进 main 方法中运行
double d = Double.parseDouble("3.14");
long l = Long.parseLong("9999999999");
System.out.println(d);                      // 输出:3.14
System.out.println(String.valueOf(d) + 1);  // 输出:3.141(字符串拼接)
System.out.println(l);                      // 输出:9999999999

Math 常用方法

Math 的全部方法都是静态的,直接用类名调用,不用创建对象:

方法作用示例结果
abs(x)绝对值Math.abs(-6) → 6
max(a,b) / min(a,b)较大 / 较小值Math.max(3,8) → 8
pow(a,b)a 的 b 次方Math.pow(2,3) → 8.0
sqrt(x)平方根Math.sqrt(9) → 3.0
round(x)四舍五入Math.round(3.6) → 4
floor(x) / ceil(x)向下 / 向上取整Math.floor(3.8) → 3.0
random()返回 [0,1) 随机小数每次运行结果不同
public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.abs(-6));       // 输出:6
        System.out.println(Math.max(3, 8));     // 输出:8
        System.out.println(Math.pow(2, 3));     // 输出:8.0
        System.out.println(Math.sqrt(16));      // 输出:4.0
        System.out.println(Math.round(3.6));    // 输出:4
        int dice = (int) (Math.random() * 6) + 1;  // 1~6 的随机整数
        System.out.println("掷出点数:" + dice);
    }
}

小结:包装类让基本类型能"对象化"使用,Integer 等提供类型转换的静态方法;数值计算交给 Math 即可。两者互相配合,Java 里的数字处理几乎无死角。

笔记加载中…