目录
一.包装类
1.Integer类
【例11.1】Integer类的常用方法
【例11.2】查看Integer类的常量值
2.Double类
【例11.3】Double类的常用方法
3.Boolean类
【例11.4】Boolean类的常用方法
4.Character类
【例11.5】Character类的常用方法
5.Number类
二.数字处理
1.数字格式化
【例11.6】DecimalFormat类的常用方法
2.Math类
(1)三角函数方法
【例11.7】在Java代码中进行三角函数运算
(2)指数函数方法
【例11.8】在Java代码中进行指数函数运算
(3)取整函数方法
【例11.9】各场景下取整函数的运算结果
(4)取最大值、最小值、绝对值函数方法
【例11.10】取最大值、最小值、绝对值的方法
3.Random类
【例11.11】获取不同取值范围、不同类型的随机数
4.BigInteger类
【例11.12】使用BigInteger类进行数学运算
5.BigDecimal类
【例11.13】使用BigDecimal类进行数学运算
总结:
三.System类
1.控制台输出字符
(1)不会自动换行的print()方法
(2)可以自动换行的println()方法
2.计时
【例11.14】查看执行一万次字符串拼接所消耗的时间
四.Scanner类
【例11.15】猜数字游戏
五.日期时间类
1.Date类
【例11.16】获取当前的日期和时间
2.日期时间格式化
【例11.17】以中文的形式打印当前的日期和时间
总结:
3.Calendar类
【例11.18】今天离中华人民共和国成立100周年差多少天
对Calendar类的使用的总结:
六.Runtime类
1.执行本地命令
【例11.19】让Java程序执行Windows系统的help命令
2.查看内存
【例11.20】监控虚拟机内存使用情况
Integer类在对象中包装了一个基本数据类型int的值,该类的对象包含了一个int类型的字段。此外,该类提供了多个方法,能在int类型和String类型之间互相转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。
代码:
结果:
Integer类提供了以下4个常量:
(1)MAX_VALUE:表示int类型可取的最大值,即2^31-1。
(2)MIN_VALUE:表示int类型可取的最小值,即-2^31。
(3)SIZE:用来以二进制补码形式表示int值的位数。
(4)TYPE:表示基本类型int的Class实例。
代码:
结果:
Double类在对象中包装一个基本类型为double的值,每个Double类的对象都包含一个double类型的字段。此外,该类还提供多个方法,可以将double类型转换为String类型,将String类型转换为double类型,也提供了其他一些处理double类型时有用的常量和方法。
代码:
结果:
Double类主要提供了以下变量:
(1) MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数。
(2) MIN_EXPONENT:返回int值,表示标准化double变量可能具有的最小指数。
(3) NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量。
(4) POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量。
Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean类型和String类型的相互转换提供了许多方法,并提供了处理boolean类型时非常有用的其他一些常量和方法。
代码:
结果:
Boolean提供了以下3个变量:
(1)TRUE:对应基值true的Boolean对象。
(2)FALSE:对应基值false的Boolean对象。
(3)TYPE:基本类型boolean的Class对象。
Character类在对象中包装一个基本类型为char的值,该类提供了多种方法,以确定字符的类型(小写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然。
代码:
结果:
Character类提供了大量表示特定字符的常量,例如:
(1)COUNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类型“Pc”。
(2)UNASSIGNED:返回byte型值,表示Unicode规范中的常规类型“Cn”。
(3)TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类型“Lt”。
对于数值型的包装类,它们有一个共同的父类——Number类,该类是一个抽象类,它是Byte、Integer、Short、Long、Float和Double类的父类,其子类必须提供将表示的数值转换为byte、int、short、long、float和double的方法。
数字格式化操作主要针对的是浮点型数据,包括double型和float型数据。在Java中使用java.text.DecimalFormat格式化数字。
在Java中,没有格式化的数据遵循以下原则:
(1)如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。
(2)如果数据绝对值小于0.001并且大于10000000,使用科学记数法表示。
DecimalFormat类是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下,可以在实例化DecimalFormat对象时传递数字格式,也可以通过 DecimalFormat类中的applyPattern()方法来实现数字格式化。
当格式化数字时,可在 DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。
代码:
结果:
在 DecimalFormat类中,除了可通过格式化模板来格式化数字,还可以使用一些特殊方法对数字进行格式化设置。例如:
DecimalFormat myFormat=new DecimalFormat();//实例化DecimalFormat类对象
myFormat.setGroupingSize(2);//设置将数字分组的大小
myFormat.setGroupingUsed(false);//设置是否支持分组
在上述代码中,setGroupingSize()方法设置格式化数字的分组大小,setGroupingUsed()方法设置是否可以对数字进行分组操作。
在项目中创建DecimalMethod类,在类的主方法中调用setGroupingSize()与setGroupingUsed()方法实现数字的分组。
代码:
结果:
Math类提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为static形式,所以在程序中应用比较简便,可以使用如下形式调用:
Math.数学方法
在Math类中,除函数方法外还存在一些常用数学常量,可以使用如下形式调用:
Math.PI
Math.E
Math类中包含的三角函数方法:
(1)public static double sin(double a):返回角的三角正弦。
(2)public static double cos(double a):返回角的三角余弦。
(3)public static double tan(double a):返回角的三角正切。
(4)public static double asin(double a):返回一个值的反正弦。
(5)public static double acos(double a):返回一个值的反余弦。
(6)public static double atan(double a):返回一个值的反正切。
(7)public static double toRadians(double angdeg):将角度转换为弧度。
(8)public static double toDegrees(double angdeg):将弧度转换为角度。
代码:
结果:
Math类中与指数函数相关的函数方法:
(1)public static double exp(double a):用于获取e的a次方。
(2)public static double log(double a):用于取自然对数。
(3)public static double log10(double a):用于取底数为10的a的对数。
(4)public static double sqrt(double a):用于取a的平方根,其中a的值不能为负值。
(5)public static double cbrt(double a):用于取a的立方根。
(6)public static double pow(double a,double b):用于取a的b次方。
代码:
结果:
Math类中主要包括以下几种取整方法:
(1)public static double ceil(double a):返回大于等于参数的最小整数。
(2)public static double floor(double a):返回小于等于参数的最大整数。
(3)public static double rint(double a):返回与参数最接近的整数,如果存在两个同样接近的整数,则结果取偶数。
(4)public static int round(float):将参数加上0.5后返回与参数最近的整数。
(5)public static long round(double a):将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型。
代码:
结果:
这是在程序中最常用的方法,Math类中包含的操作方法如下:
(1)public static double max(double a,double b):取a与b之间的最大值。
(2)public static int min(int a,int b):取a与b之间的最小值,参数为整型。
(3)public static long min(long a,long b):取a与b之间的最小值,参数为长整型。
(4)public static float min(float a,float b):取a与b之间的最小值,参数为单精度浮点型。
(5)public static double min(double a,double b):取a与b之间的最小值,参数为双精度浮点型。
(6)public static int abs(int a):返回整型参数的绝对值。
(7)public static long abs(long a):返回长整型参数的绝对值。
(8)public static float abs(float a):返回单精度浮点型参数的绝对值。
(9)public static double abs(double a):返回双精度浮点型参数的绝对值。
代码:
结果:
Random类是JDK中随机数生成器类,可以通过实例化一个Random对象创建一个随机数生成器,语法如下:
Random r=new Random();
用户也可以在实例化Random类对象时,设置随机数生成器的种子。语法:
Random r=new Random(seedValue);
r:Random类对象。
seedValue:随机数生成器的种子。
在Random类中获取各种数据类型随机数的方法:
(1)public int nextInt():返回一个随机整数。
(2)public int nextInt(int n):返回大于等于0且小于n的随机整数。
(3)public long nextLong():返回一个随机长整型值。
(4)public boolean nextBoolean():返回一个随机布尔型值。
(5)public float nextFloat():返回一个随机单精度浮点型值。
(6)public double nextDouble():返回一个随机双精度浮点型值。
(7)public double nextGaussian():返回一个概率密度为高斯分布的双精度浮点型值。
代码:
结果:
使用BigInteger类,可以实例化一个BigInteger对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
例如,将2转换为BigInteger类型,可以使用以下语句进行初始化操作:
BigInteger twoInstance=new BigInteger("2");
BigInteger类中常用的几种运算方法:
(1)public BigInteger add(BigInteger val):做加法运算。
(2)public BigInteger subtract(BigInteger val):做减法运算。
(3)public BigInteger multiply(BigInteger val):做乘法运算。
(4)public BigInteger divide(BigInteger val):做除法运算。
(5)public BigInteger remainder(BigInteger val):做取余运算。
(6)public BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。
(7)public BigInteger pow(int exponent):进行取参数的exponent次方操作。
(8)public BigInteger negate():取相反数。
(9)public BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作。
(10)public BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作。
(11)public BigInteger and(BigInteger val):做与操作。
(12)public BigInteger or(BigInteger val):做或操作。
(13)public int compareTo(BigInteger val):做数字比较操作。
(14)public boolean equals(Object x):当参数x是BigInteger类型的数字并且数值与对象实例的数值相等时,返回true。
(15)public BigInteger min(BigInteger val):返回较小的数值。
(16)public BigInteger max(BigInteger val):返回较大的数值。
代码:
结果:
BigDecimal类和BigInteger类都能实现大数字的运算,不同的是BigDecimal类加入了小数的概念。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值。
BigDecimal类类型的数字可以用来做超大的浮点型的运算,如加、减、乘、除等,但是在所有的运算中除法是最复杂的,因为在除不尽的情况下商小数点后的末位的处理是需要考虑的。
在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商小数点后的末位的处理。
代码:
结果:
代码:
结果:
System类是JDK中提供的系统类,该类是用final修饰的,所以不允许被继承。System类提供了很多系统层面的操作方法,并且这些方法全部都是静态的。
System类提供了标准输出和错误输出流,也就是说,System类提供了3个静态对象:in、out和err。
System.out.print("Hello!");
此方法输出“Hello”文字,输出完毕后,光标会停留在“Hello”文字末尾,不会自动换行。
System.out.println("书籍是人类进步的阶梯!");
此方法输出文字后会自动换行。光标停留在下一行的开头。
Java输出换行的两种方法:
System.out.print("\n");//利用换行符\n实现换行
System.out.println();//空参数即可实现换行
System.currentTimeMillis()方法可以获取自1970年1月1日零点至今的毫秒数,是为获取当前毫秒数最常用的方法。
代码:
结果:
控制台输出内容用到了System.out就表示向控制台输出,System.in就表示从控制台输入,让Scanner扫描System.in就可以获取用户输入的值了。
使用Scanner类首先要引入该类,语法:
import java.util.Scanner;//引入Scanner类
使用Scanner类扫描控制台的代码如下:
Scanner sc=new Scanner(System.in);
代码:
结果:
Date类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象。
例如,使用Date类的第二种构造方法创建一个Date类的对象,代码:
long timeMillis=System.currentTimeMillis();//当前系统时间所经历的毫秒数
Date date=new Date(timeMillis);
代码:
结果:
DateFormat类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化。
DateFormat类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG和FULL4种:
(1)SHORT:完全为数字,如12.13.52或3:30pm。
(2)MEDIUM:较长,如Jan 12,1952。
(3)LONG:更长,如January 12,1952或3:30:32pm。
(4)FULL:完全指定,如Tuesday、April 12、1952 AD或3:30:42pm PST。
使用DateFormat类还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法getDateInstance()进行创建,语法:
DateFormat df=DateFormat.getDateInstance();
使用getDateInstance()方法获取的是所在国家或地区的标准日期格式。
DateFormat类还提供了一些其他静态方法。
由于DateFormat类是一个抽象类,不能用new创建实例对象。因此,除了使用getXXXInstance()方法创建其对象,还可以使用其子类,如SimpleDateFormat类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类,它允许进行格式化(日期→文本)、分析(文本→日期)和规范化。
代码:
结果:
DateFormat类提供的Date parse(String source)方法可以将字符串转为其字面日期对应的Date对象,整个过程相当于日期格式化的逆操作。
例如,将“2021-02-19”这个字符串转成Date对象,代码:
DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse("2021-02-19");
代码:
结果:
Calendar提供了一个类方法getInstance(),以获得其类型的一个通用的对象。Calendar类的getInstance()方法返回一个Calendar对象,其日历字段已由当前日期和时间格式化,使用方法:
Calendar rightNow=Calendar.getInstance();
代码:
结果:
(1)c.set(Calendar.DAY_OF_MONTH,0)获取的是上个月的最后一天,所以调用前需要将月份往后加一个月。
(2)Calendar.MONTH的第一个月是使用0记录的,所以在获得月份数字后要加1。年和日是从1开始记录的不需要加1。
(3)Calendar.DAY_OF_WEEK的第一天是周日,周一是第二天,周六是最后一天。
Runtime类不能使用new关键字创建实例,只能通过Runtime.getRunntime()方法获取实例。
本地命令指的是操作系统的命令。
Runtime类提供exec()方法让Java代码可以执行系统命令,exec()方法有很多重载形式,如:
Process exec(String command)
Process exec(String[] cmdarray)
command:要执行的系统命令,字符串类型。
cmdarray:要执行的命令和相应的命令参数,字符串数组类型。
使用第一种重载方式的代码:
Runtime.getRuntime().exec("javac hello.java");
使用第二种重载方式的代码:
String command[]={"javac","hello.java");
Runtime.getRuntime().exec(command);
代码:
结果:
Runtime类可以通过freeMemory()方法查看当前Java虚拟机可用内存的剩余量。
代码:
结果:
注意: freeMemory()方法得到的剩余内存量是近似值。
感谢观看!