广州知名网站建设,第三方维护公司,html5/flash设计开发|交互设计|网站建设 青岛,学网站建设多少学费作者#xff1a;孙玉昌#xff0c;昵称【一一哥】#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言
我们在解决实际问题时#xff0c;会经常对数字、日期和系统设置进行处理#xff0c;比如在我们的代… 作者孙玉昌昵称【一一哥】另外【壹壹哥】也是我哦 千锋教育高级教研员、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?spm1001.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和PISystem.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(请输入一个数字...);//num10.5double 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/2System.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)*900,90) 10
System.out.println((int)(Math.random()*90)10);
8. 配套视频
与本节内容配套的视频链接如下
External Player - 哔哩哔哩嵌入式外链播放器
------------------------------------------------正片已结束来根事后烟----------------------------------------------
三. 结语
至此壹哥就把与数字、数学、随机数等相关的类给大家介绍完了本节内容没有特别难的地方主要是需要大家记住几个常用方法即可。如果你独自学习觉得有很多困难可以加入壹哥的学习互助群大家一起交流学习。