Java—— 常见API介绍 第三期
BigInteger
说明:
BigInteger表示一个大整数
构造方法:
| 方法名 | 说明 |
| public BigInteger(int num, Random r) | 获取随机大整数,范围:[0 ~ 2^num -1] |
| public BigInteger(String val) | 获取指定的大整数 |
| public BigInteger(String val, int radix) | 获取指定进制的大整数 |
代码演示:
public class Test {public static void main(String[] args) {//public BigInteger(int num, Random r) 获取随机大整数,范围:[0 ~ 2^num -1]//public BigInteger(String val) 获取指定的大整数//public BigInteger(String val, int radix) 获取指定进制的大整数Random r = new Random();for (int i = 0; i < 20; i++) {BigInteger bd1 = new BigInteger(4, r);System.out.print(bd1+" ");//10 5 15 1 5 14 15 1 3 12 4 10 7 9 4 8 4 7 13 1}BigInteger bd2 = new BigInteger("999999999999999999");System.out.println(bd2);//999999999999999999BigInteger bd3 = new BigInteger("10100",2);System.out.println(bd3);//20//细节://1.字符串中的数字必须是整数//2.字符串中的数字必须要跟进制吻合。//比如二进制中,那么只能写0和1,写其他的就报错。}
}
常用成员方法:
| 方法名 | 说明 |
| public static BigInteger value0f (long val) | 静态方法获取BigInteger的对象,内部有优化 |
| public BigInteger add (BigInteger val) | 加法 |
| public BigInteger subtract (BigInteger val) | 减法 |
| public BigInteger multiply (BigInteger val) | 乘法 |
| public BigInteger divide (BigInteger val) | 除法,获取商 |
| public BigInteger[] divideAndRemainder (BigInteger val) | 除法, 获取商和余数 |
| public boolean equals (0bject x) | 比较是否相同 |
| public BigInteger pow (int exponent) | 次幂 |
| public BigInteger max/min (BigInteger val) | 返回较大值/较小值 |
| public int intValue (BigInteger val) | 转为int类型整数, 超出范围数据有误 |
代码演示:
public class Test2 {public static void main(String[] args) {//静态方法获取BigInteger对象BigInteger bd1 = BigInteger.valueOf(99999999);System.out.println(bd1);//99999999//静态方法获取BigInteger的对象,内部有优化//细节://1.能表示范围比较小,只能在long的取值范围之内,如果超出1ong的范围就不行了。//2.在内部对常用的数字:-16~16进行了优化。//提前把-16 ~16创建好BigInteger的对象,如果多次获取不会重新创建新的。BigInteger bd2 = BigInteger.valueOf(100);BigInteger bd3 = BigInteger.valueOf(100);System.out.println(bd2 == bd3);//falseBigInteger bd4 = BigInteger.valueOf(16);BigInteger bd5 = BigInteger.valueOf(16);System.out.println(bd4 == bd5);//trueBigInteger bd6 = BigInteger.valueOf(10);BigInteger bd7 = BigInteger.valueOf(3);//加法BigInteger result1 = bd6.add(bd7);System.out.println(result1);//14//除法,获取商和余数BigInteger[] result2 = bd6.divideAndRemainder(bd7);System.out.println(result2[0]);//记录商 3System.out.println(result2[1]);//记录余数 1//比较是否相同boolean result3 = bd6.equals(bd7);System.out.println(result3);//次幂BigInteger result4 = bd6.pow(2);System.out.println(result4);//100//返回较大值/较小值BigInteger max = bd6.max(bd7);System.out.println(max);//10BigInteger min = bd6.min(bd7);System.out.println(min);//3//转为int类型整数, 超出范围数据有误int num = bd6.intValue();System.out.println(num);//10}
}
注意事项:
1.如果BigInteger表示的数字没有超出long的范围,建议用静态方法获取。
2.如果BigInteger表示的超出long的范围,建议用构造方法获取。
3.对象一旦创建,BigInteger内部记录的值不能发生改变。
4.只要进行计算都会产生一个新的BigInteger对象
BigDecima
说明:
BigDecima用于小数的精确计算或用来表示很大的小数
构造方法:
| 方法名 | 说明 |
| public BigDecimal(double val) | 传递double类型的小数来创建对象 |
| public BigDecimal(String val) | 传递字符串来创建对象 |
代码演示:
public class Test3 {public static void main(String[] args) {//public BigDecimal(double val) 传递double类型的小数来创建对象//public BigDecimal(String val) 传递字符串来创建对象//传递double类型的小数来创建对象//结果可能是不准确的,不建议使用BigDecimal bd1 = new BigDecimal(0.9);System.out.println(bd1);//0.90000000000000002220446049250313080847263336181640625//传递字符串来创建对象BigDecimal bd2 = new BigDecimal("0.9");System.out.println(bd2);//0.9}
}
常用成员方法:
| 方法名 | 说明 |
| public static BigDecimal valueof(double val) | 获取对象 |
| public BigDecimal add(BigDecimal val) | 加法 |
| public BigDecimal subtract(BigDecimal val) | 减法 |
| public BigDecimal multiply(BigDecimal val) | 乘法 |
| public BigDecimal divide(BigDecimal val) | 除法 |
| public BigDecimal divide(BigDecimal val,精确位数,舍入模式) | 除法 |
代码演示:
public class Test4 {public static void main(String[] args) {//获取对象//细节://如果传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new//如果传递的是小数,底层调用toString方法将小数转化为字符串,再利用new创建BigDecimal bd1 = BigDecimal.valueOf(10);System.out.println(bd1);//10BigDecimal bd2 = BigDecimal.valueOf(10);System.out.println(bd1 == bd2);//trueBigDecimal bd3 = BigDecimal.valueOf(10.0);System.out.println(bd3);//10.0System.out.println(bd1 == bd3);//falseBigDecimal bd4 = BigDecimal.valueOf(10.0);BigDecimal bd5 = BigDecimal.valueOf(3.0);//加法BigDecimal result1 = bd4.add(bd5);System.out.println(result1);//13.0//除法/* BigDecimal result2 = bd4.divide(bd5);System.out.println(result2);//报错:没有精确可表示的小数结果*///所以需要规定精确位数,舍入模式BigDecimal result2 = bd4.divide(bd5, 2, RoundingMode.HALF_UP);System.out.println(result2);//3.33}
}
扩展:其他舍入模式
RoundingMode.UP:远离零方向舍入的舍入模式
RoundingMode.DOWN:向零方向舍入的舍入模式
RoundingMode.CEILING:向正无限大方向舍入的舍入模式
RoundingMode.FLOOR:向负无限大方向舍入的舍入模式
注意事项:
1.如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法
2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法
相关文章:
Java—— 常见API介绍 第三期
BigInteger 说明: BigInteger表示一个大整数 构造方法: 方法名说明public BigInteger(int num, Random r)获取随机大整数,范围:[0 ~ 2^num -1]public BigInteger(String val)获取指定的大整数public BigInteger(String val, int radix)获取指…...
Qt 信号与槽复习
Qt 信号与槽复习 Qt 信号与槽(Signals and Slots)机制是 Qt 框架的核心特性之一,用于实现对象之间的通信。它提供了一种松耦合的方式,使得组件可以独立开发和复用,广泛应用于 GUI 编程、事件处理和跨模块交互。本文将…...
深入理解React中的Props与State:核心区别与最佳实践
在React开发中,props和state是构建交互式UI的两大基石。许多React初学者常常混淆这两者的概念,导致组件设计出现反模式。本文将全面剖析props与state的本质区别,通过实际场景说明它们的适用边界,并分享高效管理组件数据的实践经验…...
STM32单片机入门学习——第46节: [14-1] WDG看门狗
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.23 STM32开发板学习——第46节: [14-1] WDG看门狗 前言开发板说明引用解答和科普一、…...
什么是分库分表?
分库分表是一种数据库的分布式架构设计策略,以下是详细介绍: 概念 • 随着互联网的发展,数据量呈爆炸式增长,单个数据库服务器可能难以应对海量数据的存储和访问压力。分库分表就是将原本庞大的数据库拆分成多个小的数据库&#…...
n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)
n8n 是一款强大的开源工作流自动化工具,可帮助你连接各类应用与服务,实现自动化任务。如果你想快速体验 n8n 的功能,本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n,无需服务…...
2025第十六届蓝桥杯python B组满分题解(详细)
目录 前言 A: 攻击次数 解题思路: 代码: B: 最长字符串 解题思路: 代码: C: LQ图形 解题思路: 代码: D: 最多次数 解题思路: 代码: E: A * B Problem 解题思路&…...
工厂方法模式详解及在自动驾驶场景代码示例(c++代码实现)
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,通过定义抽象工厂接口将对象创建过程延迟到子类实现,实现对象创建与使用的解耦。该模式特别适合需要动态扩展产品类型的场景。 自动驾驶感知场景分析 自动驾…...
Redis之Java操作redis
零:在test测试类下创建一个类 SpringBootTest public class SpringDateRedisTest {... } 一:五大操作类型 Autowiredprivate RedisTemplate redisTemplate;Testpublic void testRedisTemplate() {System.out.println(redisTemplate);ValueOperations v…...
Kafka 面试,java实战贴
面试问题列表 Kafka的ISR机制是什么?如何保证数据一致性? 如何实现Kafka的Exactly-Once语义? Kafka的Rebalance机制可能引发什么问题?如何优化? Kafka的Topic分区数如何合理设置? 如何设计Kafka的高可用跨…...
linux多线(进)程编程——(9)信号量(一)
前言 在找到了共享内存存在的问题后,进程君父子着手开始解决这些问题。他们发明了一个新的神通——信号量。 信号量 信号量是一个计数器,用于管理对共享资源的访问权限。主要特点包括: (1)是一个非负整数 ÿ…...
PFLM: Privacy-preserving federated learning with membership proof证明阅读
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
关闭111端口监听
默认rpcbind服务会使用111端口,如果想禁用111端口,只需要禁用rpcbind服务即可: systemctl stop rpcbind.socket systemctl disable rpcbind.socket#检查111端口是否禁用成功 netstat -tuln |grep 111rpcbind 服务详解 rpcbind 服务…...
C++中的引用:深入理解与实用示例
文章目录 C中的引用:深入理解与实用示例一、引用的基本概念二、引用作为别名的应用三、引用作为函数参数四、指针与引用的区别五、常量引用六、引用与返回值七、总结 C中的引用:深入理解与实用示例 在C编程中,“引用”是一个强大而重要的概念…...
图片转base64 - 加菲工具 - 在线转换
图片转base64 - 加菲工具 先进入“加菲工具” 网 打开 https://www.orcc.top, 选择 “图片转base64”功能 选择需要转换的图片 复制 点击“复制”按钮,即可复制转换好的base64编码数据,可以直接用于img标签。...
opencv 对图片的操作
对图片的操作 1.图片镜像旋转(cv2.flip())2 图像的矫正 1.图片镜像旋转(cv2.flip()) 图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像的镜像旋转分为水平翻转、垂直翻转、水平垂直翻转…...
LabVIEW数据采集与传感系统
开发了一个基于LabVIEW的智能数据采集系统,该系统主要通过单片机与LabVIEW软件协同工作,实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率,适用于各种需要高精度和低成本解决方案的工业场合。 项…...
【Easylive】Gateway模块 bootstrap.yml 解析
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 Gateway模块 bootstrap.yml 常规解析 该配置文件定义了 Spring Cloud Gateway 的核心配置,包括 环境配置、服务注册、动态路由规则 等。以下是逐项解析: 1. 基础配…...
matlab 环形单层柱状图
matlab 环形单层柱状图 matlab 环形单层柱状图 matlab 环形单层柱状图 图片 图片 【图片来源粉丝】 我给他的思路是:直接使用风玫瑰图可以画出。 rose_bar 本次我的更新和这个有些不同!是环形柱状图,可调节细节多; 只需要函数…...
文献×汽车 | 基于 ANSYS 的多级抛物线板簧系统分析
板簧系统是用于减弱或吸收动态系统中发生的应力、应变、偏转和变形等破坏性因素的机械结构。板簧系统可能对外力产生不同的响应,具体取决于其几何结构和材料特性。板簧系统的计算机辅助分析对于高精度确定系统的变形特性和结构特性至关重要。 在这项工作中ÿ…...
MySQL:如何用关系型数据库征服NoSQL核心战场?
写在前面:当SQL遇见NoSQL的十年之变 2012年MongoDB掀起文档数据库革命时,开发者们不得不在灵活性与事务一致性之间做痛苦抉择。十年后的今天,MySQL 8.0的JSON功能已实现: ✅ 二进制存储效率超越传统BLOB 40% ✅ 多值索引使JSON查…...
分布式之CAP原则:理解分布式系统的核心设计哲学
声明:CAP中的P原则都是需要带着的 在分布式系统的设计与实践中,CAP原则(又称CAP定理)是开发者必须掌握的核心理论之一。它揭示了分布式系统在一致性(Consistency)、可用性(Availability&#x…...
RHCE 练习二:通过 ssh 实现两台主机免密登录以及 nginx 服务通过多 IP 区分多网站
一、题目要求 1.配置ssh实现A,B主机互相免密登录 2.配置nginx服务,通过多ip区分多网站 二、实验 实验开始前需准备两台 linux 主机便于充当服务端以及客户端,两台主机 IP 如下图: 实验1:配置 ssh 实现 A࿰…...
瑞吉外卖-分页功能开发中的两个问题
1.分页功能-前端页面展示显示500 原因:项目启动失败 解决:发现是Category实体类中,多定义了一个删除字段,但是我数据库里面没有is_deleted字段,导致查询数据库失败,所以会导致500错误。因为类是从网上其他帖…...
工业物联网安全网关 —— 安全OTA升级签名验证
这里写目录标题 工业物联网安全网关 —— 安全OTA升级签名验证一、项目背景与简介1.1 背景介绍1.2 OTA升级的安全挑战1.3 项目目标二、理论基础与关键技术2.1 数字签名基础2.2 OTA升级签名验证原理2.3 关键技术与安全算法三、系统架构设计3.1 系统模块划分3.2 系统架构图(Merm…...
生信分析平台Galaxy是使用什么语言编程?是R语言吗?
Galaxy平台是一个基于**Python**开发的开放源代码生物信息学分析平台,而非主要依赖R语言。以下是关键细节: 1. **核心语言** - **后端**:主要用**Python**(Django/Flask框架)实现服务器逻辑、工具集成和API。 …...
【Rust 精进之路之第10篇-借用·规则】引用 (``, `mut`):安全、高效地访问数据
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:所有权的“限制”与“变通”之道 在上一篇【所有权核心】中,我们揭示了 Rust 如何通过所有权规则和移动 (Move) 语义来保证内存安全,避免了垃圾回收器的同时,也防止了诸…...
基于瑞芯微RK3576国产ARM八核2.2GHz A72 工业评估板——Docker容器部署方法说明
前 言 本文适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:VMware16.2.5、Ubuntu22.04.5 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-6.1.115 LinuxSDK:LinuxSDK-[版本号](基于rk3576_linux6.1_release_v1.1.0) Docker是一个开…...
Kafka安全认证技术:SASL/SCRAM-ACL方案详解
#作者 :张桐瑞 文章目录 1Kafka安全认证技术介绍2基础设置3 配置SASL/SCRAM认证3.1编写server.properties配置3.2编写kafka.conf密码文件3.3编写user.properties配置文件3.4编写kafka-run-class.sh脚本文件3.5Zk中增加kafka用户3.6启动kafka进程 1Kafka安全认证技术…...
MySQL VS SQL Server:优缺点全解析
数据库选型、企业协作、技术生态、云数据库 1.1 MySQL优缺点分析 优点 开源免费 社区版完全免费,适合预算有限的企业 允许修改源码定制功能(需遵守GPL协议) 跨平台兼容性 支持Windows/Linux/macOS,适配混合环境部署 云服务商…...
