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

HoRain云--Java数值处理:Number与Math全解析

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

一、Number 类

为什么需要它?

核心抽象方法(所有子类必须实现)

典型子类要点

二、Math 类

常用方法速查

Math vs StrictMath

三、两者关系 & 选型建议


Java 里的Number​ 和Math​ 都位于java.lang包,是数值处理的两大基础,但定位完全不同——一个管"数值类型的抽象与装箱",一个管"数学运算工具"。


一、Number 类

java.lang.Number是一个抽象类,是所有数值包装类(Integer、Long、Double、Float、Byte、Short)以及BigDecimalBigInteger的父类。

为什么需要它?

Java 8 种基本类型里,数值类有 6 个(byte/short/int/long/float/double),它们不是对象,不能放进集合、不能调方法。Number 给它们套了一层父类,让"数值"也能当对象用(即装箱)。

// 子类举例 Integer i = 10; // extends Number Double d = 3.14; // extends Number BigDecimal bd = new BigDecimal("1.23"); // extends Number

核心抽象方法(所有子类必须实现)

int intValue(); long longValue(); float floatValue(); double doubleValue(); byte byteValue(); // 默认转 int 再强转 short shortValue(); // 默认转 int 再强转

用途:在不同数值类型之间转换(可能丢精度)。

Double d = 3.99; int x = d.intValue(); // 3,直接截断,不是四舍五入

典型子类要点

包装类

缓存范围

备注

Integer

-128 ~ 127

valueOf()走缓存

Long

-128 ~ 127

同上

Byte

全量缓存

就 256 个

Float/Double

无缓存

valueOf()直接 new

Integer a = 127; Integer b = 127; System.out.println(a == b); // true(缓存) Integer c = 128; Integer d = 128; System.out.println(c == d); // false(new 出来的) System.out.println(c.equals(d)); // true(比值,推荐)

💡 包装类比较值永远用equals,别用==


二、Math 类

java.lang.Mathfinal 工具类,构造器 private,所有方法都是static,拿来即用,不用 new。

public final class Math { private Math() {} // 防实例化 }

常用方法速查

基础运算

Math.abs(-5); // 5,绝对值 Math.max(3, 7); // 7 Math.min(3, 7); // 3 Math.pow(2, 10); // 1024.0(返回 double) Math.sqrt(9); // 3.0

取整三兄弟(最容易混)

Math.ceil(3.2); // 4.0 天花板,向上 Math.floor(3.8); // 3.0 地板,向下 Math.round(3.5); // 4 四舍五入(本质是 floor(x+0.5)) Math.round(-3.5); // -3 ⚠️ 不是 -4

随机数

Math.random(); // [0.0, 1.0) 的 double // 想要 [0, 10) 的整数: int n = (int)(Math.random() * 10);

生产代码更推荐ThreadLocalRandomRandomMath.random()内部同步,并发性能一般。

其他

Math.signum(-5); // -1.0(符号函数) Math.hypot(3, 4); // 5.0,√(x²+y²),防溢出写法 Math.log(10); // 自然对数 Math.PI; // π Math.E; // 自然常数

Math vs StrictMath

绝大多数场景用Math就够了。


三、两者关系 & 选型建议

// 反例 System.out.println(0.1 + 0.2); // 0.30000000000000004 ❌ // 正解 BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); System.out.println(a.add(b)); // 0.3 ✅

要不要我接着展开BigDecimal的坑(scale / roundingMode / 构造器传 double 的陷阱),或者包装类自动拆装箱在集合里的真实表现?

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

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

相关文章:

  • DSP在线升级(2)--Bootloader的模块化设计与通信协议集成
  • 华硕笔记本终极优化工具:G-Helper轻量控制中心完整指南
  • Citra模拟器完全指南:在PC上畅玩任天堂3DS游戏的终极教程
  • ESP8266点对点通信实战:从AT指令到数据透传
  • VDA 2 第六版深度解析:数字化时代下PPA(生产过程和产品批准)的标准化实践与合规保障
  • 多目标跟踪(二)DeepSort——级联匹配Matching Cascade的工程实践与调优
  • 鸿蒙 App 如何设计 Agent Bus?一文讲透智能体通信机制
  • Cursor Free VIP终极指南:三步轻松破解试用限制,免费使用AI编程助手
  • LaTeX(0): 从零到一,TeXLive与TeXStudio的极速部署与高效入门
  • 银河麒麟V10远程桌面实战:从原生配置到第三方VNC服务部署
  • Vue+Element项目实战:SM4国密算法在用户敏感数据加密中的应用
  • GeoServer信息泄漏漏洞CVE-2025-27505复现与安全加固指南
  • 山景BP1048 OTA升级实战:从握手到重启的固件更新全流程解析
  • C#集成Bartender:动态图片标签打印的实战与优化
  • Windows 10 环境下 Nessus 8.15 专业版离线部署与无限IP授权实战
  • 沁恒 CH32V208(三): 在Ubuntu22.04上构建VSCode+CMake一体化开发环境
  • 怎样高效突破网盘限速:5个实战技巧使用LinkSwift开源工具
  • SQLServer进行计算平均值,计算批次损耗率=损耗比例的平均值,用于统计指标卡
  • ZLAN_ACC:从零到一,详解ABAP程序迁移与备份的自动化利器
  • 别再手动描边了!CVAT分割标注的‘自动边框’和‘智能裁剪’功能,帮你效率翻倍
  • 5分钟学会QRazyBox:免费修复损坏二维码的终极指南
  • UDS实战:从协议规范到诊断会话的工程化解析
  • Python-ABAQUS二次开发:从odb文件解析到自动化后处理实战
  • 基于STM32与ESP8266的温湿度监测系统:从硬件连接到乐联网数据可视化全解析
  • VHDL流程控制实战:从IF/CASE语法到高效数字电路设计
  • 绿化草绳哪家机构好
  • 3分钟搞定Windows PDF打印难题:PDFtoPrinter轻量级解决方案深度解析
  • 免费一对一软件职业辅导活动
  • 092、python-docx 自动生成 Word:样式、表格、图片、段落格式全控制
  • Ubuntu环境实战:从源码编译到应用,解锁GStreamer NVENC/NVDEC插件全流程