60从零开始学Java之与数字相关的类有哪些?

news2024/11/26 14:45:03

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦

千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者

前言

我们在解决实际问题时,会经常对数字、日期和系统设置进行处理,比如在我们的代码中,经常会遇到一些数字&数学问题、随机数问题、日期问题和系统设置问题等。为了解决这些问题,Java给我们提供了多个处理相关问题的类,比如Number类、Math类、Random类、BigInteger类、BigDecimal类、Date类、System类等。接下来,壹哥会利用几篇文章,给大家详细地介绍这些与数学、日期、系统处理等相关的类,本篇文章我们先从Number数字类和Math数学类学起。

-----------------------------------------------前戏已做完,精彩即开始---------------------------------------------

全文大约【3000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

配套开源项目资料

Github:

GitHub - SunLtd/LearnJava

Gitee:

从零开始学Java: 从零开始学Java系列稀土掘金专栏地址:https://juejin.cn/column/7175082165548351546CSDN专栏地址:https://yiyige.blog.csdn.net/article/details/129377219?spm=1001.2014.3001.5502

一. Number类

1. 内容回顾

在学习Java里的Math数学类之前,我们再来回顾一下之前学习过的Number数字类。

我们知道,Java里的数据类型可以分为引用类型和基本类型,其中基本类型有3大类8个子类,如下图所示:

实际上,无论是整数型还是浮点型,它们都是数值型,当我们定义数值型变量时,都是直接操作的数字。而在实际开发中,我们还经常遇到需要使用对象,而不是使用内置数据类型的情况。所以为了解决这个问题,Java又为每一个内置的基本数据类型提供了对应的包装类。其中,6个数值型对应的包装类(Byte、Short、Integer、Long、Float、Double),都是抽象类Number的子类。在基本类型和包装类型之间,会涉及到装箱和拆箱的操作,大家可以回顾一下这是怎么回事,如果你想不起来,请回过头来看看壹哥之前的文章哦。

2. 数字格式化

我们在使用数字时,很多时候并不只是简单地原文展示,还要对这些数字进行各种格式化操作,比如设置小数点后几位、数字后带%号或货币符号等。这种使用场景,在解决实际问题时是很普遍的。但我们不用在数字后手动添加,Java自带了一个DecimalFormat类,可以对数字进行格式化处理。
DecimalFormat是NumberFormat的子类,用于格式化十进制数字,该类包含一个模式和一组符号,这些常用的符号含义如下:

符号

说明

0

显示数字,如果位数不够则补0

#

显示数字,如果位数不够不发生变化

.

小数分隔符

-

减号

,

组分隔符

E

分隔科学记数法中的尾数和小数

%

前缀或后缀,乘以 100 后作为百分比显示

?

乘以 1000 后作为千进制货币符显示。用货币符号代替。如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符

接下来壹哥通过一个案例来演示DecimalFormat的用法:

/**
 * @author 一一哥Sun 
 * V我领资料:syc_2312119590 
 * 各平台都有壹哥的同名博客哦
 */
public class Demo08 {
	public static void main(String[] args) {
		// 实例化DecimalFormat类对象,并设置格式
		//小数点后保留1位
		DecimalFormat df1 = new DecimalFormat("0.0");
		//整数格式
		DecimalFormat df2 = new DecimalFormat("#.#");
		//小数点后保留3位小数
		DecimalFormat df3 = new DecimalFormat("000.000");
		//以100%百分比格式显示
		DecimalFormat df4 = new DecimalFormat("#%");
		
		float f = 1000f;
		// 对输入的数字应用格式,并输出结果
		System.out.println("0.0格式:" + df1.format(f));
		System.out.println("#.#格式:" + df2.format(f));
		System.out.println("000.000格式:" + df3.format(f));
		System.out.println("百分比格式:" + df4.format(f));
	}
}

二. Math数学类

1. 简介

在开发的时候,我们经常需要对数字进行各种数学计算,虽然Java给我们提供了+、-、*、/ 和 % 等基本算术运算符,但这些符号并不能进行更复杂的数学运算,例如三角函数、对数运算、指数运算等。所以为了方便实现这些数学计算功能,Java自身就给我们提供了一个Math数学类,用于进行各种常见的数学操作。

Math中提供了用于执行基本数学运算的多个属性和方法,如初等指数、对数、平方根和三角函数等。Math 类位于 java.lang包中,它的构造方法是 private私有的,因此我们无法创建 Math类对象。为了方便调用这些方法和属性,Math类中的很多方法和属性都被定义为static形式,这样我们就可以直接调用了。

接下来壹哥就给大家分别介绍一下Math类中的常用属性和方法,这些方法比较多,大家不用专门的记忆,以后用到时根据名字就能猜出来它们的功能。但是对于一些容易引起混淆的方法,壹哥还是希望大家要稍微记一下。

2. 静态常量

Math类给我们提供了两个比较常用的静态常量,分别是 E 和 PI,它们的值分别等于 e(自然对数) 和 π(圆周率)。这两个属性我们可以直接调用,如下所示:

public static void main(String[] args) {
	//静态常量E和PI
	System.out.println("E常量的值:" + Math.E);
	System.out.println("PI常量的值:" + Math.PI);
}

3. 计算最大值、最小值和绝对值

我们还经常对数字计算最大值、最小值和绝对值,Math类中提供了对应的多个重载方法,这些方法如下表所示:

方法

说明

static int abs(int a)

返回 a 的绝对值

static int max(int x,int y)

返回 x 和 y 中的最大值

static int min(int x,int y)

返回 x 和 y 中的最小值

以上这4个方法,分别都有4个重载方法,主要是方法的参数类型不同,而且返回值也不同,它们都可以接收int、long、float、double 4种类型的参数。这几个方法的用法如下:

public static void main(String[] args) {
	//计算最大值、最小值、绝对值
	System.out.println("5和35中的最大值:" + Math.max(35, 5));
    System.out.println("0.1和-100中的较小值:" + Math.min(0.1, -100));
    System.out.println("-900的绝对值:" + Math.abs(-900));
}

4. 求整运算

Math类给我们提供了好几个用于求整的方法,用于得到整数部分,如下表所示:

方法

说明

static double ceil(double a)

返回大于或等于 a 的最小整数

static double floor(double a)

返回小于或等于 a 的最大整数

static double rint(double a)

返回最接近 a 的整数值,如果有两个同样接近的整数,则结果取偶数

static int round(float a)

将参数加上 1/2 后返回与参数最近的整数

static long round(double a)

将参数加上 1/2 后返回与参数最近的整数,然后强制转换为长整型

以上方法的用法如下所示:

import java.util.Scanner;

/**
 * @author 一一哥Sun
 */
public class Demo03 {

	public static void main(String[] args) {
		//求整运算
		Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字...");
        //num=10.5
        double num = input.nextDouble();
		
		//向上取整
        System.out.println("向上取整:"+Math.ceil(num));//11.0
        
        //向下取整
        System.out.println("向下取整:"+Math.floor(num));//10.0
        
        //四舍五入
        System.out.println("四舍五入:"+Math.round(num));//11
        
        //返回最接近num的整数值,如果有两个同样接近的整数,则结果取偶数.
        System.out.println("最接近 "+num+" 的整数:" + Math.rint(num));//10.0
	}

}

5. 三角函数运算

Math中还给我们提供了用于计算三角函数的方法,如下表所示:

方法

说明

static double sin(double a)

返回角的三角正弦值,参数以孤度为单位

static double cos(double a)

返回角的三角余弦值,参数以孤度为单位

static double asin(double a)

返回一个值的反正弦值,参数域在 [-1,1],值域在 [-PI/2,PI/2]

static double acos(double a)

返回一个值的反余弦值,参数域在 [-1,1],值域在 [0.0,PI]

static double tan(double a)

返回角的三角正切值,参数以弧度为单位

static double atan(double a)

返回一个值的反正切值,值域在 [-PI/2,PI/2]

static double toDegrees(double angrad)

将用孤度表示的角转换为近似相等的用角度表示的角

staticdouble toRadians(double angdeg)

将用角度表示的角转换为近似相等的用弧度表示的角

以上方法的用法如下所示:

/**
 * @author 一一哥Sun
 */
public class Demo04 {
	public static void main(String[] args) {
		//三角函数运算
		//Math.sin()方法参数的单位是弧度,90度表示的是角度,需要把90度转换为弧度,即Math.PI/180*90,故转换后的弧度为Math.PI/2
		System.out.println("90度的正弦值:" + Math.sin(Math.PI/2));
        System.out.println("0度的余弦值:" + Math.cos(0));
        System.out.println("30的正切值:" + Math.tan(30));
        System.out.println("30的反正切值:" + Math.atan(30));
        System.out.println("1.8弧度的角度值:" + Math.toDegrees(1.8));
        System.out.println("100度的弧度值:" + Math.toRadians(100.0));
	}
}

6. 指数运算

指数运算包括求方根、取对数、求n次方等运算,Math类中定义的指数运算方法如下表所示:

方法

说明

static double exp(double a)

返回 e 的 a 次幂

static double pow(double a,double b)

返回以 a 为底数,以 b 为指数的幂值

static double sqrt(double a)

返回 a 的平方根

static double cbrt(double a)

返回 a 的立方根

static double log(double a)

返回 a 的自然对数,即 lna 的值

static double log10(double a)

返回以 10 为底 a 的对数

以上方法的用法如下所示:

public static void main(String[] args) {
	//指数运算
	System.out.println("5的立方值:" + Math.pow(5, 3));
    //求a的立方根,参数是要开立方的数
    System.out.println("27的立方根:"+Math.cbrt(27));
	System.out.println("16的平方根:" + Math.sqrt(16));
    System.out.println("10为底,2的对数:" + Math.log10(2));
}

7. 生成随机数

在Math类中还给我们提供了一个用于生成[0~1)范围内随机数的random()方法。该方法没有参数,它默认会返回一个 >=0.0、<1.0 的 double类型随机数,即随机数的取值范围是[0~1)。我们只需对 random()方法的返回值稍加处理,即可产生任意范围内的随机数。该方法使用比较简单,案例如下:

//随机数 默认的范围[0,1)
System.out.println(Math.random());

//随机生成一个两位数,[0,1)*90,0,90) + 10     
System.out.println((int)(Math.random()*90)+10);

8. 配套视频

与本节内容配套的视频链接如下:

External Player - 哔哩哔哩嵌入式外链播放器

------------------------------------------------正片已结束,来根事后烟----------------------------------------------

三. 结语

至此,壹哥就把与数字、数学、随机数等相关的类给大家介绍完了,本节内容没有特别难的地方,主要是需要大家记住几个常用方法即可。如果你独自学习觉得有很多困难,可以加入壹哥的学习互助群,大家一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

转一篇文章-搜狗输入法出现繁体消除不了怎么办?

省流&#xff1a;ctrlshiftf 详见此人的实验 搜狗拼音突然成繁体字了怎么办&#xff1f; - 简书使用搜狗输入法&#xff0c;总是莫名的出现繁体字&#xff0c;打开设置选择的也是简体&#xff0c;但是打字就是繁体&#xff0c;最近终于摸索出来一次成功解决的方法&#xff0c…

git rebase 修改中间的commit

0. 前言 今天在移植最新版本 kfence 功能的时候&#xff0c;一共需要移植大概40多个 patch&#xff0c;中间有很多patch 存在冲突&#xff0c;需要手动修改后才能合并。当所有的patch 都合并完成进行编译的时候&#xff0c;发现其中一个 patch 手动合并出了个错误。 假如共有…

springboot整合sentinel完成限流

1、直入正题&#xff0c;下载sentinel的jar包 1.1 直接到Sentinel官网里的releases下即可下载最新版本&#xff0c;Sentinel官方下载地址&#xff0c;直接下载jar包即可。不过慢&#xff0c;可能下载不下来 1.2 可以去gitee去下载jar包 1.3 下载完成后&#xff0c;进行打包…

仪表基础知识培训

压力传感器:E+H PMX5x/FMX5x 一、安装:安装注意事项: 1、水平安装时仪表的呼吸孔(1)需要向下安装,并远离污染物。 2、请勿用坚硬的物体擦拭或接触膜片。 3、请勿安装在水泵的入口和搅拌叶附近 二、供电、接线、信号、:二线制,仪表输出4-20mA 三、量程:设置最大最小量程…

VS中cmake多配置构建设置

一.cmake在vs中的使用简介 CMake 是一种跨平台开源工具&#xff0c;用于定义在多个平台上运行的生成过程。 Visual Studio C 和 C 开发不再仅适用于 Windows。 本教程介绍如何在 Windows 和 Linux 上使用 Visual Studio C 进行跨平台开发。 由于它基于 CMake&#xff0c;无需…

VR虚拟展厅——商业领域中不可或缺的工具

VR虚拟展厅已经逐渐在商业领域崭露头角&#xff0c;将实体展厅以三维、立体化的形式还原在线上&#xff0c;企业能够以更加直观、真实的方式展示自身的形象和产品&#xff0c;用户也得以通过VR虚拟展厅全方位了解产品详情&#xff0c;包括图片展示、视频介绍等&#xff0c;更加…

websocket php教程

WebSocket 是 HTML5 提供的一种网络通讯协议&#xff0c;用于服务端与客户端实时数据传输。广泛用于浏览器与服务器的实时通讯&#xff0c;APP与服务器的实时通讯等场景。 相比传统HTTP协议请求响应式通讯&#xff0c;WebSocket协议可以做到实时的双向通讯&#xff0c;服务端可…

Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力

在9 月 19 日的Imagine 2023 大会上&#xff0c;智能自动化领域的领导者 Automation Anywhere 宣布对其自动化平台进行扩展。推出了新的 Responsible AI Layer&#xff0c;并宣布了四项关键产品更新&#xff0c;包括全新的 Autopilot&#xff0c;它可以利用生成式 AI &#xff…

IT隔离电源系统在医院电气设计中的应用

【摘要】许多国际标准都对医疗领域&#xff0c;尤其是那些生命攸关的场所&#xff0c;如手术室、重症监护室、心脏监护室等的配电系统作了特殊的规定。现在国际上针对医疗领域中的手术室、ICU、CCU等重要场所通常采用局部“中性点不接地的供电系统”&#xff08;IEC标准称之为“…

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录 背景入口起点分离基本使用防重复 SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGroupssplitChunks.cacheGroups.{cacheGroup}.prioritysplitChunks.cacheG…

智能制造,RFID与流转线碰撞

智能制造&#xff0c;RFID与流转线碰撞 RFID是一种无线通信技术&#xff0c;可以用于实时识别和物品。它通过将包含有信息的标签贴在物品上&#xff0c;利用射频信号进行通信&#xff0c;将物品的信息传输给读取器。读取器可以通过无线方式读取标签上的信息&#xff0c;从而实…

公众环境关注如何提升企业ESG表现(2011-2022年)

参照陶云清&#xff08;2023&#xff09;的做法&#xff0c;本团队对来自“科学学与科学技术管理”《公众环境关注如何提升企业ESG表现&#xff1f;—基于外部压力与内部关注的双重视角》一文中的基准回归部分进行复刻。 如何驱动企业在逐利过程中兼顾环境、社会和治理表现&am…

IC业务杂谈-----片内外设、片上外设 和、片外外设的区别

片内外设就是片上外设&#xff0c;同一种意思不同说法而已。 片内外设和片外外设的区别&#xff1a; 片内、外设是两个概念&#xff0c;片内指做成芯片的集成电路内部&#xff0c;简称片内&#xff0c;片外同理显而易见&#xff1b;外设是外部设备的简称&#xff0c;是指集成…

Direct3D融合技术

该技术能使我们将当前要进行光栅化的像素的颜色与先前已已光栅化并处于同一位置的像素的颜色进行合成&#xff0c;即将正在处理的图元颜色值与存储在后台缓存中的像素颜色值进行合成(混合)&#xff0c;利用该技术我们可得到各种各样的效果&#xff0c;尤其是透明效果。 在融合…

根据经纬度数据画出船只航行路径图(cartopy + matplotlib)

问题&#xff1a; 已知穿航行的经纬度记录&#xff0c;怎么在地图上画出&#xff1f; 思路&#xff1a; 1先画出地图&#xff0c;使用cartopy。 2然后再将不连续的点绘制在地图中&#xff0c;这样的连线就是轨迹了。 &#xff08; cartopy库的安装见我的其他文章简明cartop…

【postgresql 】 ERROR: “name“ is not supported as an alias

org.postgresql.util.PSQLException: ERROR: "name" is not supported as an alias 错误&#xff1a;不支持将“name”作为别名 SELECT real_name name FROM doc_user 加上 在关键词上加上 “” 示例&#xff1a; SELECT real_name "name" FROM do…

05_2D3D转换

1 2D 转换 转换是 CSS3 中具有颠覆性的一个特征&#xff0c;可以实现元素的位移、旋转、变形、缩放。 通过 transform 转换来实现 2D 转换或者 3D 转换。 2D 转换包括&#xff1a; 缩放 scale移动 translate旋转 rotate倾斜 skew&#xff08;了解&#xff09; 1.1 缩放 sc…

【EI会议信息】第五届物联网、自动化和人工智能国际会议(IoTAAI 2023)

第五届物联网、自动化和人工智能国际会议&#xff08;IoTAAI 2023&#xff09; 2023 5th International Conference on Internet of Things, Automation and Artificial Intelligence 第五届物联网、自动化和人工智能国际会议&#xff08;IoTAAI 2023&#xff09;将于2023年1…

周界警戒AI算法+视频智能分析在安全生产场景中的应用

长期以来&#xff0c;周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用&#xff0c;通过AI智能检测与视频智能分析技术&#xff0c;现代化的周界安防系统可以做到全天候快速、准确…

【PX4】PX4第一个offborad例程

【PX4】PX4第一个offborad例程 文章目录 【PX4】PX4第一个offborad例程1. 什么是OFFBOARD2. 第一个offboard例程3. 编写launch文件Reference 1. 什么是OFFBOARD PX4的OFFBOARD指的是外部控制模式&#xff0c;飞行器根据飞行控制栈外部&#xff08;如机载计算机&#xff09;提供…