尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

HoRain云--Java数值处理:Number与Math全解析
📅 发布时间:2026/6/30 16:00:43

🎬 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)以及BigDecimal、BigInteger的父类。

为什么需要它?

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.Math是final 工具类,构造器 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);

生产代码更推荐ThreadLocalRandom或Random,Math.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:某些方法允许 JVM 用平台最优实现(如 x87 / SSE2),更快,但跨平台结果可能差最后一个 bit

  • StrictMath:严格保证逐 bit 可移植,性能略差

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


三、两者关系 & 选型建议

  • Number:当你需要把数值当对象——放集合、泛型、Optional<Integer>、JSON 序列化 → 用包装类

  • Math:做计算、取整、随机数 → 直接Math.xxx()

  • 高精度(钱、金融)→BigDecimal(也是 Number 子类),别用double算钱

// 反例 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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关新闻

  • 华硕笔记本终极优化工具:G-Helper轻量控制中心完整指南
  • DSP在线升级(2)--Bootloader的模块化设计与通信协议集成
  • Windows 10 环境下 Nessus 8.15 专业版离线部署与无限IP授权实战

最新新闻

  • 动态调度如何优化大数据性能?openEuler/uadk-bigdata负载均衡机制深度解析
  • OpenEuler Infrastructure开发者手册:贡献代码前必须了解的核心架构
  • CXPatcher:解锁Mac上CrossOver终极游戏兼容性的深度优化指南
  • OpenDesign Skills 设计令牌实战:6大主题 CSS 变量体系详解
  • 从入门到精通:OpenEuler/Golang基础语法快速学习手册
  • 鸿蒙物理 108 篇 第五十一篇 热象弥散传导机理

日新闻

  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号