第十一章总结

本文介绍了Java中的包装类,包括Integer、Double、Boolean和Character等,用于将基本数据类型转换为对象处理。此外,讲解了Math类的数学运算方法,如三角函数、指数和取整。还讨论了如何生成随机数,包括Math.random()和Random类的使用。最后,提到了日期时间处理,如Date和Calendar类的应用。
摘要由CSDN通过智能技术生成

目录

常用类库

11.1        包装类

11.1.1        integer类

 11.1.2        Double类

11.1.3        Boolean类

11.1.4        Character类 

11.1.5        Number类

11.2        Math类

11.2.1        Math 类概述

11.2.2        常用数学运算方法

11.3        随机数

11.3.1        Math.random()方法

 11.3.2        Random类

11.4        日期时间类

11.4.1        Date类

 11.4.2        Calendar类

常用类库
11.1        包装类

        是一种面向对象的语言,但在Java中不能定义基本数据类型的对象,为了能将基本数据类型视为对象进行处理,Java提出了包装类的概念,它主要是将基本数据类型封装在包装类中,如in型数值的包装类Integer,boolean型的包装类Boolean等,这样便可以把这些基本数据类型转换为对象进行处理。Java中的包装类及其对应的基本数据类型如表9.1所示。 

说明:

        Java是可以直接处理基本数据类型的,但在有些情况下需要将其作为对象来处理,这时就需要将其转换为包装类了,这里的包装类相当于基本数据类型与对象类型之间的一个桥梁。由于包装类和基本数据类型间的转换,引入了装箱和拆箱的概念:装箱就是将基本数据类型转换为包装类,而拆箱就是将包装类转换为基本数据类型,这里只需要简单了解这两个概念即可。

11.1.1        integer类

        java.lang包中的Integer类、Byte类、Short类和Long类,分别将基本数据类型 int、byte、short4和long封装成一个类,由于这些类都是Number的子类,区别就是封装不同的数据类型,其包含的方法基本相同,所以本节以Integer类为例介绍整数包装类。

        Integer类在对象中包装了一个基本数据类型int的值,该类的对象包含一个int类型的字段,此外,该类提供了多个方法,能在int类型和String类型之间互相转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。

1.构造方法:

Integer类有以下两种构造方法。

(1) Integer (int number)
该方法以一个int型变量作为参数来获取Integer对象。
例如,以int型变量作为参数创建Integer对象,代码如下:

Integer number = new Integer(7);


(2) Integer (String str)
该方法以一个String型变量作为参数来获取Integer对象。
例如,以String型变量作为参数创建Integer对象,代码如下:

Integer number=new Integer("45");
注意:


        如果要使用字符串变量创建 Integer对象,字符串变量的值一定要是数值型的,如“123”,否则将会抛出NumberFormatException异常。

 2.常用方法:

Integer类的常用方法如表11.2所示:

 例11.1   创建一个Demo 类,其中首先使用Integer类的parselnt方法将一个字符串转换为int数据:然后创建一个Integer对象,并调用其equals方法与转换的int数据进行比较:最后演示使用Integer类的toBinaryString方法、toHexString方法、toOctalString方法和toString方法将int 数据转换为二进制、十六进制、八进制和不常使用的十五进制表示形式。代码如图所示:

运行结果

 

 3.常量

Integer类提供了以下4个常量:

1、MAX VALUE:表示int类型可取的最大值,

2、MIN VALUE:表示int类型可取的最小值,

3、SIZE:用来以二进制补码形式表示int值的位数,

4、TYPE:表示基本类型int的Class实例,

例 11.2   在项目中创建类GetCon,在主方法中实现将Integer类的常量值输出。代码如图所示:

运行结果如图所示

 

 11.1.2        Double类

        Double类和Float类是对double、float基本类型的封装,它们都是Number类的子类,都是对小数进行操作。

        Double类在对象中包装一个基本类型为double的值,每个Double类的对象都包含一个double类型的字段。此外,该类还提供多个方法,可以将double转换为String,将String转换为double,也提供了其他一些处理double时有用的常量和方法。

1.构造方法

Double类提供了以下两种构造方法来获得Double类对象。

(1) Double(double value)
基于double参数创建Double类对象。
例如,以int型变量作为参数创建Double对象,代码如下:

Double number = newDouble(3.14);
(2) Double(String str)
该方法以一个String型变量作为参数来获取Double对象。
例如,以String型变量作为参数创建Double对象,代码如下:

Double number = new Double("3.14");
2.常用方法

Double类的當用方法如表9.3所示:

例11.3   创建一个useDouble类,其中首先使用Double类的valueOf方法创建一个Double对象,然后使用Double类的常用方法对该对象进行操作,并查看它们的显示结果。代码如图所示:

 

运行结果

 

3.常量

Double类主要提供了以下常量:

(1) MAX _EXPONENT:返回int值,表示有限double变量可能具有的最大指数。
(2) MIN EXPONENT:返回int值,表示标准化double变量可能具有的最小指数。
(3) NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量。
(4) POSITIVE INFINITY:返回double值,表示保存double类型的正无穷大值的常量。

11.1.3        Boolean类

        Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean和Sring的相互转换提供了许多方法,并提供了处理boolean时非常有用的其他一些常量和方法。       

1.构造方法 

Boolean类提供了以下两种构造方法来获得Boolean类对象。

(1) Boolean(boolean value)
该方法创建一个表示value参数的Boolean对象。
例如,创建一个表示value参数的Boolean对象,代码如下:

Boolean b = new Boolean(true);
(2) Boolean(String str)
该方法以String变量作为参数创建Boolean对象。如果String参数不为null且在忽略大小写时等于true,则分配一个表示true值的Boolean对象,否则获得一个false值的Boolean对象。
例如,以String变量作为参数,创建Boolean对象。代码如下:

Boolean bool = new Boolean("ok");


2.常用方法

Boolean类的常用方法如表9.4所示:

 例11.4   在项目中创建类GetBoolean,在主方法中以不同的构造方法创建Boolean对象,并调用booleanValue()方法将创建的对象重新转换为boolean数据输出。代码如图所示:

结果

 

 3. 常量

Boolean提供了以下3个常量:

(1) TRUE:对应基值true的Boolean对象。
(2) FALSE:对应基值false的Boolean对象。
(3) TYPE:基本类型boolean的Class对象。

11.1.4        Character类 

        Character类在对象中包装一个基本类型为char的值,该类提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然。

1. 构造方法

Character类的构造方法语法如下:
 

Character(char value)
该类的构造方法的参数必须是一个char类型的数据。通过该构造方法将一个char类型数据包装成一个Character类对象。一旦Character类被创建,它包含的数值就不能改变了。
例如,以char型变量作为参数,创建Character对象。代码如下:

Character mycharnewCharacter('s'); 

2.常用方法

Character类提供了很多方法来完成对字符的操作,常用的方法如表9.5所示:

 例 9.5   在项目中创建类 UpperOrLower,在主方法中创建Character类的对象,通过判断字符的大小写状态确认将其转换为大写还是小写。代码如图所示:

 

3.常量

Character类提供了大量表示特定字符的常量,例如:

(1) CONNECTOR PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”。
(2) UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”。
(3) TITLECASE LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”。

说明:
Character类提供的常量有很多,详细列表可查看JavaAPI文档。

11.1.5        Number类

        前面学习了Java中的包装类,对于数值型的包装类,它们有一个共同的父类——Number类,该类是一个抽象类,它是Byte、Integer、Short、 Long、Float和Double类的父类,其子类必须提供将表示的数值转换为byte、 int、short、long、float和double的方法。例如,doubleValue()方法返回双精度值,floatValue0方法返回浮点值,这些方法如表9.6所示:

    Number类的方法分别被Number的各子类所实现,也就是说,在Number类的所有子类中都包含以上这几种方法。 

 

11.2        Math类

        我们学习过+、一、*、/、%等基本的算术运算符,使用它们可以进行基本的数学运算,Java中提供了一个执行数学基本运算的Math类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数,除此之外还提供了一些常用的数学常量,如PI、E等。本节将介绍Math类以及其中的一些常用方法。

11.2.1        Math 类概述

        Math类表示数学类,它位于java.lang包中,由系统默认调用,该类中提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值以及绝对值函数方法,这些方法都被定义为static形式,因此在程序中可以直接通过类名进行调用。使用形式如下:

Math.数学方法


        在Math类中除了函数方法之外还存在一些常用的数学常量,如PI、E 等,这些数学常量作为Math类的成员变量出现,调用起来也很简单。可以使用如下形式调用:

Math.PI    //表示圆周率 PI 的值
Math.E    //表示自然对数底数e的值


例如,下面代码用来分别输出PI和E的值。代码如下:

System.out.println(”圆周率x的值为: Math.PI);
System.out.println(”自然对数底数e的值为:"+Math.E);


上面代码的输出结果为:

圆周率x的值为:3.141592653589793
自然对数底数e的值为:2,718281828459045


11.2.2        常用数学运算方法

        Math类中的常用数学运算方法较多,大致可以将其分为4大类别,分别为三角函数方法,指数
函数方法,取整函数方法以及取最大值、最小值和绝对值函数方法。

1、三角函数方法

Math类中包含的三角函数方法如表9.7所示.:
 

 以上每个方法的参数和返回值都是double型的,将这些方法的参数的值设置为double型是有一定道理的,参数以弧度代替角度来实现,其中1°等于π/180弧度,所以180°可以使用π弧度来表示,除了可以获取角的正弦、余弦、正切、反正弦、反余弦、反正切之外,Mathb类还提供了角度和弧度相互转换的方法toRadians()和toDegrees()。但需要注意的是,角度与弧度的转换通常是不精确的。
例11.6   在项目中创建TrigonometricFunction类,在类的主方法中调用Math类提供的各种三角函数运算方法,并输出运算结果。代码如图所示:

 

  通过运行结果可以看出,90°的正弦值为1,0°的余弦值为1,60°的正切与Math.sqrt(3)的值应该是一致的,也就是取3的平方根。在结果中可以看到第4~6行的值是基本相同的,这个值换算后正是45°,也就是获取的Math.sqrt(2)/2反正弦、反余弦值与1的反正切值都是45°。最后两行打印语句实现的是角度和弧度的转换,其中Math.toRadians(120.0)语句是获取120°的弧度值,而Math.toDegrees(Math.PI/2)语句是获取x/2的角度。读者可以将这些具体的值使用x的形式表示出来,与上述结果应该是基本一致的,这些结果不能做到十分精确,因为元本身也是一个近似值。

2.指数函数方法

Math类中与指数相关的函数方法如表9.8所示:  

     指数运算包括求方根、取对数以及求n次方的运算。为了使读者更好地理解这些指数函数方法的用法,

例 11.7   在项目中创建ExponentFunction类,在类的主方法中调用Math类中的方法实现指数函数的运算,并输出运算结果。代码如图所示:

 

3.取整函数方法

        在具体的问题中,取整操作使用也很普遍,所以Java在Math类中添加了数字取整方法。Math
类中常用的取整方法如表9.9所示:

 

注意:

由于数1.0和数2.0距离数1.5都是0.5个单位长度,因此Math.rint返回偶数2.0。


例11.8    在项目中创建IntFunction类,在类的主方法中调用Math类中的方法实现取整函数的运算,并输出运算结果。代码如图所示:

 

4. 取最大值、最小值、绝对值函数方法
        Math类还有一些常用的数据操作方法,比如取最大值、最小值、绝对值等,它们的说明如表11.10所示:

 

11.3        随机数

        在实际开发中生成随机数的使用是很普遍的,所以在程序中生成随机数的操作很重要。在Java中主要提供了两种方式生成随机数,分别为调用Math类的random()方法和Random类提供的生成各种数据类型随机数的方法。

11.3.1        Math.random()方法

        在Math类中存在一个random)方法,用于生成随机数字,该方法默认生成大于等于0.0小于1.0的double型随机数,即0<=Math.random()<1.0,虽然 Math.random()方法只可以生成0~1之间的double型数字,但只要在Math.random()语句上稍加处理,就可以使用这个方法生成任意范围的随机数,如图11.11所示:   
  

 

 

   例 11.10使用Math.random0方法实现一个简单的猜数字小游戏,要求:使用Math.random0方法生成一个0~100之间的随机数字,然后用户输入猜测的数字,判断输入的数字是否与随机生成的数字匹配,如果不匹配,提示相应的信息,如果匹配,则表示猜中,游戏结束。代码如图所示:

 

   除了随机生成数字以外,使用Math类的random(方法还可以随机生成字符,例如,可以使用下面代码生成a~z之间的字符:

(char) ('a'+Math.random()*('z'-'a'+1));


        通过上述表达式可以求出更多的随机字符,如A~Z之间的随机字符,进而推理出求任意两个字符之间的随机字符,可以使用以下语句表示:

(char)(chal+Math.random()*(cha2-chal+1));


在这里可以将这个表达式设计为一个方法,参数设置为随机生成字符的上限与下限。

例 11.11   在项目中创建 MathRandomChar类,在类中编写GetRandomCharO方法生成随机字符,并在主方法中输出该字符。代码如图所示:

 

 

 注意:
        Math. random向方法返回的值实际上是伪随机数,它通过复杂的运算而得到一系列的数,该方法是通过当事判断作为随机数生成器的参数,所以每次执行程序都会产生不同的随机数。

 11.3.2        Random类

        除了Math类中的random(方法可以获取随机数之外,Java中还提供了一种可以获取随机数的方式,那就是java. util. Random类,该类表示一个随机数生成器,可以通过实例化一个Random对象创建一个随机数生成器。语法如下:

Random r=new Random();

其中,r是指Random对象。

        以这种方式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以生成的随机数将不同,但是如果运行速度太快,也会生成两次运行结果相同的随机数。

同时也可以在实例化Random类对象时,设置随机数生成器的种子。语法如下:

Random r=new Random(seedValue);

r:Random类对象。
seedValue:随机数生成器的种子。

 在Random类中提供了获取各种数据类型随机数的方法,其常用方法及说明如表9.11所示

 

 

例 11.12   使用Random类模拟微信的抢红包功能,具体实现时,在项目中创建RedBags类,然后根据用户输入的红包额度和个数随机生成每个红包的金额。代码如图所示: 

 

11.4        日期时间类

在程序开发中,经常需要处理日期时间,Java中提供了专门的日期时间类来处理相应的操作。

11.4.1        Date类

        Date类用于表示日期时间,它位于java.util包中,程序中使用该类表示时间时,需要使用其构
造方法创建Date类的对象,其构造方法及说明如表9.12所示:

 说明:
        从表9.12中可以看出,Date类的后4种构造方法已经显示过时,它们已经被Calendar的相应方法或者 DateFormat类的相应方法取代了,后面将介绍这两个类。

 例如,使用Date类的第2种方法创建一个Date类的对象,代码如下:

long timeMillis = System.currentTimeMillis();
Date date=new Date (timeMillis);


        上面代码中的System类的currentTimeMillis0方法主要用来获取系统当前时间距标准基准时间的毫秒数,另外,这里需要注意的是,创建Date对象时使用的是long型整数,而不是double型,这主要是因为double类型可能会损失精度。

        使用Date类创建的对象表示日期和时间,它涉及最多的操作就是比较,例如两个人的生日,哪个较早,哪个又晚一些,或者两人的生日完全相等,其常用的方法如表9.13所示:

 例11.13   在项目中创建类,使用Date类的 getTime方法获得自1970年1月1日00:00:00 GMT
开始到现在所表示的毫秒数,并输出。代码如图所示:

 

 

 说明:
        由于Date类所创建对象的时间是变化的,所以每次运行程序在控制台所输出的结果都是不一样的。

        DateFormat类是日期/时间格式化子类的抽象类,它位于java.text包中,可以按照指定的格式对日期或时间进行格式化。DateFormat提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间Formatter,格式化风格包括SHORT、MEDIUM、LONG和FULL等4种,分别如下:

SHORT:完全为数字,如12.13.52或3:30pm。
MEDIUM:较长,如Jan 12,1952。
LONG:更长,如 January 12,1952 或3:30:32pm。
FULL:完全指定,如Tuesday、April 12、1952AD或3:30:42pm PST。

        另外,使用DateFormat还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态工厂方法getDateInstance进行创建。语法如下:

DateFormat df = DateFormat.getDateInstance();


        使用getDateInstance获取的是该国家/地区的标准日期格式,另外,DateFormat类还提供了一些其他静态工厂方法,例如,使用getTimeInstance可获取该国家/地区的时间格式,使用getDateTimeInstance可获取日期和时间格式。

        DateFormat类的常用方法及说明如表9.14所示:

 由于DateFormat类是一个抽象类,不能用new创建实例对象,因此,除了使用getXXXInstance方法创建其对象外,还可以使用其子类,例如SimpleDateFormat类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类,它允许进行格式化(日期->文本)、分析(文本->日期)和规范化。

例 9.14   创建一个Java类,在其中首先创建Date类的对象;然后使用DateFormat类的 getInstance方法和SimpleDateFormat类的构造方法创建不同的DateFormat对象,并指定不同的日期时间格式,并对当前日期时间进行格式化,并输出。代码如图所示:

 

 

11.4.2        Calendar类

        Date类在设计之初没有考虑到国际化,它的很多方法都被标记为过时状态,而且其方法不能满足用户需求,比如需要获取指定时间的年月日时分秒信息,或者想要对日期时间进行加减运算等复杂的操作,Date类已经不能胜任。

        Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF MONTH.HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。另外,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为protected。

        Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。Calender的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。使用方法如下:

Calendar rightNow=Calendar.getInstance();


说明:
        由于Calendar类是一个抽象类,不能用new创建实例对象,因此除了使用getlnstance方法创建其对象外,还可以使用其子类创建对象,例如GregorianCalendar类。

 Calendar类提供的常用字段及说明如表9.15所示:

Calendar类提供的常用方法及说明如表9.16所示:

 说明:
        从上面的表格中可以看到,add方法和roll方法都用来为给定的日历字段添加或减去指定的时间量,它们的主要区别在于使用add方法时会影响大的字段,像数学里加法的进位或错位,而使用roll方法设置的日期字段只是进行增加或减少,不会改变更大的字段。

例 9.15   创建一个Java程序,在其中通过使用Calendar类的相关方法输出2022年“北京一张家口”冬奥会的倒计时、代码如图所示:

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值