Java 数字与数学类
Java 不仅提供了基本数据类型(如 int, double)来处理数字,还提供了一系列的包装类 (Wrapper Classes) 以及一个强大的 Math 类,用于更复杂的操作和计算。
数字包装类 (Number Wrapper Classes)
对于每一种基本数据类型,Java 都提供了一个对应的包装类。这些类将基本类型“包装”成对象,从而赋予它们更多的功能,例如类型转换或参与面向对象的操作(如在泛型集合中存储)。
| 基本类型 | 包装类 |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
自动装箱与拆箱 (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): 返回a和b中的较大值。Math.min(a, b): 返回a和b中的较小值。Math.sqrt(x): 返回x的正平方根。Math.pow(a, b): 返回a的b次幂 (a^b)。Math.round(x): 返回x四舍五入后的long或int值。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
}
}