「炎码工坊」技术弹药已装填!
点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】
场景1:生成随机密码
假设你要开发一个注册系统,需要生成一个6位随机数字密码。你会怎么做?
// 方案1:使用 Math.random()
int password = (int)(Math.random() * 900000) + 100000;
System.out.println("随机密码:" + password);
场景2:计算两点距离
在游戏中,角色A坐标(3,4),角色B坐标(0,0),如何计算两者距离?
double distance = Math.sqrt(Math.pow(3-0, 2) + Math.pow(4-0, 2));
System.out.println("两点距离:" + distance); // 输出5.0
问题本质
Math 类提供了 数学运算的标准化工具,避免重复造轮子。
// 取绝对值
System.out.println(Math.abs(-10)); // 输出10
// 最大值/最小值
System.out.println(Math.max(5, 10)); // 输出10
System.out.println(Math.min(5, 10)); // 输出5
// 四舍五入
System.out.println(Math.round(2.6f)); // 输出3
// 角度转弧度
double radians = Math.toRadians(45);
// 计算正弦值
System.out.println(Math.sin(radians)); // 约0.7071
// 幂运算
System.out.println(Math.pow(2, 3)); // 输出8.0
// 方案1:Math.random() [0,1)
System.out.println(Math.random());
// 方案2:ThreadLocalRandom(Java 7+)
import java.util.concurrent.ThreadLocalRandom;
System.out.println(ThreadLocalRandom.current().nextInt(1, 100));
需求场景 | 推荐方案 | 优点 | 缺点 |
简单随机数 | Math.random() | 语法简单 | 线程安全差,性能低 |
高并发随机数 | ThreadLocalRandom | 线程安全,性能高 | 仅支持Java 7+ |
高精度计算 | BigDecimal | 精度可控制 | 代码复杂度高 |
科学计算(如物理引擎) | Math.sin/cos/tan 等 | 内置优化,精度可靠 | 需注意角度单位转换 |
// 方案1:Math.random()
int r1 = (int)(Math.random() * 100) + 1;
// 方案2:ThreadLocalRandom
int r2 = ThreadLocalRandom.current().nextInt(1, 101);
// 性能对比:100万次调用耗时
// Math.random(): ~120ms
// ThreadLocalRandom: ~80ms
术语 | 解释 |
JDK | Java Development Kit,Java开发工具包 |
API | 应用程序编程接口,提供预定义功能 |
线程安全 | 多线程环境下数据一致性保障 |
浮点数精度丢失 | 小数在计算机中的二进制表示误差 |
BigDecimal | Java 提供的高精度数值计算类 |
ThreadLocalRandom | Java 7 引入的线程绑定随机数生成器 |
弧度(Radian) | 角度单位,180°=π 弧度 |
Math 类是 Java 开发的 瑞士军刀,从随机密码生成到游戏物理引擎计算,都离不开它。
选择建议:
Math.random()
和 Math.pow()
ThreadLocalRandom
BigDecimal
扩展思考:如果让你设计一个抽奖概率算法,会如何利用 Math 类实现?
您已阅读完全文99%!缺少1%的关键操作:
加入「炎码燃料仓」 获得:
√ 开源工具红黑榜
√ 项目落地避坑指南
√ 每周BUG修复进度+1%彩蛋
(温馨提示:本工坊不打灰工,只烧脑洞)