当前位置: 首页 > news >正文

Java基础:Math工具类全方位详解

简介:本篇详细讲解java.lang.Math常用常量、取整、随机数、幂运算等API,搭配实操代码,适合新手收藏复习。
一、概述
java.lang.Math是Java自带数学工具类,全部成员静态修饰,无需new创建对象,无需手动导包,专门封装数学计算相关方法,日常数值运算、随机数生成、几何计算、算法开发频繁使用。
二、Math内置静态常量
Math提供两个常用数学常量:
Math.PI:圆周率π
Math.E:自然对数底数e
public class MathTest {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.E);
}
}
三、核心常用API分类
3.1 绝对值、最大值、最小值
abs(数值):获取绝对值,支持int、long、float、double
max(a,b):获取两个数最大值
min(a,b):获取两个数最小值
System.out.println(Math.abs(-6.8));
System.out.println(Math.max(15,32));
System.out.println(Math.min(9,2));
3.2 三种取整方式(面试高频)
ceil():向上取整,向数轴正方向取值
floor():向下取整,向数轴负方向取值
round():四舍五入取整
System.out.println(Math.ceil(2.1)); //3.0
System.out.println(Math.floor(2.9));//2.0
System.out.println(Math.round(2.5));//3
3.3 开方与幂运算
sqrt(double):算术平方根
pow(a,b):a的b次方
System.out.println(Math.sqrt(64));
System.out.println(Math.pow(3,2));//3²
3.4 随机数 random()
Math.random():返回[0.0,1.0)区间随机小数
固定公式:生成 [min,max] 整数
(int)(Math.random()*(max-min+1)+min)
//生成1~10随机整数
int ran = (int)(Math.random()*10+1);
System.out.println(ran);
3.5 三角函数(参数为弧度)
System.out.println(Math.sin(Math.PI/2));//sin90°
System.out.println(Math.cos(Math.PI)); //cos180°
四、实战案例:结合图形类求随机圆面积
衔接上一篇Shape抽象类代码,随机半径计算圆形面积
//半径范围1~10
double r = (int)(Math.random()*10+1);
double area = Math.PI * Math.pow(r,2);
System.out.println("半径:"+r+",圆面积:"+area);
五、注意事项与总结
Math所有方法都是static,使用:Math.方法名();
double存在精度缺失,金融高精度计算用BigDecimal;
随机数需求简单用Math.random(),大量随机优先Random类。
六、课后思考题(可用于作业/自测)
题目1:代码输出题
public class Test{
public static void main(String[] args){
double num = 4.39;
System.out.println(Math.ceil(num));
System.out.println(Math.floor(num));
System.out.println(Math.round(num));
}
}
思考:打印结果分别是多少?
题目2:编程题1
使用Math方法,随机生成5个[10,30]之间的整数,遍历打印所有数字。
题目3:编程题2
输入一个圆的随机半径(范围2~15),利用Math.PI和Math.pow计算周长与面积。
题目4:简答题
Math中方法为什么不用实例化对象就能调用?
Math.random()取值范围是左闭右开还是全闭区间?
七、拓展
后续更新Random随机类、BigDecimal高精度运算,关注不迷路。

http://www.jsqmd.com/news/939206/

相关文章:

  • 企业网站开发公司推荐——企业网站开发全攻略:如何选对服务商,打造高价值官网? - mougen1
  • 免费音频编辑神器Audacity:从零开始掌握专业级音频处理
  • 数字记忆守护者:如何用开源工具永久备份你的微信聊天记录
  • DeepEval 框架实战(一):快速搭建环境并编写第一个 LLM 测试用例
  • 01_制版厂质检员的困境
  • 共沸脱水技术及其在光刻胶用PGMEA纯化中的应用(下)
  • 实战一:用户、权限、组 案例
  • 【财务系统AI化生死线】:监管新规倒计时90天!3类未备案AI接口将被强制下线
  • 嵌入式测试学习第 26 天:SPI通信协议基础、主从模式、速度特点
  • CentOS 7下SFTP连接报错‘bad ownership’?手把手教你排查OpenSSH的chroot目录权限
  • 防火墙为什么能根据 IP 地址过滤?IP 不是会变的吗?
  • 自指螺旋与电子内禀自旋的对应关系推导(世毫九实验室原创研究)
  • IO练习题
  • 告警准确率从61%跃升至98.7%:基于LSTM-Attention双模态异常检测的工业级落地实践
  • ArcGIS Pro 3.0 下 Linkage Mapper 报错全攻略:从‘No module named lm_config’到‘Circuitscape failed’的20+个坑我都帮你踩了
  • Nvidia cuDNN 面试准备
  • 徐珊新歌《六月的简历和情书》上线:用2086年的嗓音,唱哭2026年的每一个你
  • 什么是CDN?小学生也能听懂的网络加速魔法
  • Cursor 插件,才是 AI 编程的真正终局
  • 别再傻傻分不清了!用Python实战案例帮你彻底搞懂准确率、召回率和精确度
  • ripgrep 15.1.0 官方版下载(夸克网盘+百度网盘,SHA256校验)
  • 113.手写Linux刷机自动化工具|适配小米一加,自动检设备、防翻车、批量刷分区
  • 量子模拟技术解析:非简谐振荡器的VQE实现
  • 别再手动调参了!盘点10个开箱即用的相机标定工具(含OpenCV/Kalibr/Matlab保姆级对比)
  • 深度实战:Python爬取今日头条关键词搜索结果的完整指南(Ajax接口与signature签名破解)爬取今日头条关键词搜索结果o 技术点:Ajax接口、signature签名破解(进阶)
  • AnywhereVLA框架:语言驱动的机器人移动操作系统
  • AI时代下,Java程序员还要看源码吗?
  • 为什么很多硬件工程师工作10年,能力却只增长了2年?
  • Transformer模型在表格数据合成中的性能优化与实践
  • PyTorch轴承故障识别实战包:含CWRU一维振动数据、LSTM/1D-CNN模型权重与训练可视化图表