第十一章总结

 

一.包装类

 


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

 

 【例11.1】Integer类的常用方法
代码:

 

         

结果:

 

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

(1)MAX_VALUE:表示int类型可取的最大值,即2^31-1。

(2)MIN_VALUE:表示int类型可取的最小值,即-2^31。

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

(4)TYPE:表示基本类型int的Class实例。

【例11.2】查看Integer类的常量值
代码:

 

结果:

 

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

 

【例11.3】Double类的常用方法
代码:

 

结果:

 

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

 

(1) MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数。

(2) MIN_EXPONENT:返回int值,表示标准化double变量可能具有的最小指数。

(3) NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量。

(4) POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量。

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

 【例11.4】Boolean类的常用方法
 代码:

 

 结果:

 

 Boolean提供了以下3个变量:

(1)TRUE:对应基值true的Boolean对象。

(2)FALSE:对应基值false的Boolean对象。

(3)TYPE:基本类型boolean的Class对象。

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

 

【例11.5】Character类的常用方法 
代码:

 

 

结果:

 

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

(1)COUNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类型“Pc”。

(2)UNASSIGNED:返回byte型值,表示Unicode规范中的常规类型“Cn”。

(3)TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类型“Lt”。

        5.Number类
        对于数值型的包装类,它们有一个共同的父类——Number类,该类是一个抽象类,它是Byte、Integer、Short、Long、Float和Double类的父类,其子类必须提供将表示的数值转换为byte、int、short、long、float和double的方法。

 

二.数字处理
        1.数字格式化
        数字格式化操作主要针对的是浮点型数据,包括double型和float型数据。在Java中使用java.text.DecimalFormat格式化数字。

        在Java中,没有格式化的数据遵循以下原则:

(1)如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。

(2)如果数据绝对值小于0.001并且大于10000000,使用科学记数法表示。

 

 

        DecimalFormat类是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下,可以在实例化DecimalFormat对象时传递数字格式,也可以通过 DecimalFormat类中的applyPattern()方法来实现数字格式化。

        当格式化数字时,可在 DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。

 【例11.6】DecimalFormat类的常用方法
代码:

 

结果:

 

        在 DecimalFormat类中,除了可通过格式化模板来格式化数字,还可以使用一些特殊方法对数字进行格式化设置。例如:

DecimalFormat myFormat=new DecimalFormat();//实例化DecimalFormat类对象
myFormat.setGroupingSize(2);//设置将数字分组的大小
myFormat.setGroupingUsed(false);//设置是否支持分组
        在上述代码中,setGroupingSize()方法设置格式化数字的分组大小,setGroupingUsed()方法设置是否可以对数字进行分组操作。

在项目中创建DecimalMethod类,在类的主方法中调用setGroupingSize()与setGroupingUsed()方法实现数字的分组。

代码:

 

结果:

 

        2.Math类
        Math类提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为static形式,所以在程序中应用比较简便,可以使用如下形式调用:

Math.数学方法
        在Math类中,除函数方法外还存在一些常用数学常量,可以使用如下形式调用:

Math.PI
Math.E
                (1)三角函数方法
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):将弧度转换为角度。

【例11.7】在Java代码中进行三角函数运算
代码:

结果:

                 (2)指数函数方法
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次方。

【例11.8】在Java代码中进行指数函数运算
代码:

 

结果:

 

                (3)取整函数方法 
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后返回与参数最近的整数,然后强制转换为长整型。

【例11.9】各场景下取整函数的运算结果
代码:

 

结果:

 

                (4)取最大值、最小值、绝对值函数方法
        这是在程序中最常用的方法,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):返回双精度浮点型参数的绝对值。

【例11.10】取最大值、最小值、绝对值的方法
代码:

 

结果:

 

        3.Random类
        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():返回一个概率密度为高斯分布的双精度浮点型值。

【例11.11】获取不同取值范围、不同类型的随机数
代码:

 

结果:

 

        4.BigInteger类 
        使用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):返回较大的数值。

【例11.12】使用BigInteger类进行数学运算
代码:

 

结果:

 

        5.BigDecimal类
        BigDecimal类和BigInteger类都能实现大数字的运算,不同的是BigDecimal类加入了小数的概念。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值。

         BigDecimal类类型的数字可以用来做超大的浮点型的运算,如加、减、乘、除等,但是在所有的运算中除法是最复杂的,因为在除不尽的情况下商小数点后的末位的处理是需要考虑的。

        在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商小数点后的末位的处理。 

 【例11.13】使用BigDecimal类进行数学运算 
代码:

 

结果:

 

总结:
代码:

 

结果:

 

三.System类
        System类是JDK中提供的系统类,该类是用final修饰的,所以不允许被继承。System类提供了很多系统层面的操作方法,并且这些方法全部都是静态的。

 

        1.控制台输出字符 
        System类提供了标准输出和错误输出流,也就是说,System类提供了3个静态对象:in、out和err。

(1)不会自动换行的print()方法
System.out.print("Hello!");
       此方法输出“Hello”文字,输出完毕后,光标会停留在“Hello”文字末尾,不会自动换行。

(2)可以自动换行的println()方法
System.out.println("书籍是人类进步的阶梯!");
        此方法输出文字后会自动换行。光标停留在下一行的开头。

Java输出换行的两种方法:

System.out.print("\n");//利用换行符\n实现换行
System.out.println();//空参数即可实现换行
        2.计时
        System.currentTimeMillis()方法可以获取自1970年1月1日零点至今的毫秒数,是为获取当前毫秒数最常用的方法。

【例11.14】查看执行一万次字符串拼接所消耗的时间
代码:

 

结果:

 

四.Scanner类
        控制台输出内容用到了System.out就表示向控制台输出,System.in就表示从控制台输入,让Scanner扫描System.in就可以获取用户输入的值了。

 

        使用Scanner类首先要引入该类,语法:

import java.util.Scanner;//引入Scanner类


         使用Scanner类扫描控制台的代码如下:

Scanner sc=new Scanner(System.in);
【例11.15】猜数字游戏
代码:

 

结果:

 

五.日期时间类
        1.Date类
        Date类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象。

 

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

long timeMillis=System.currentTimeMillis();//当前系统时间所经历的毫秒数
Date date=new Date(timeMillis);

 


 【例11.16】获取当前的日期和时间
代码:

 

结果:

 

        2.日期时间格式化
        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类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类,它允许进行格式化(日期→文本)、分析(文本→日期)和规范化。

 

 

 

【例11.17】以中文的形式打印当前的日期和时间 
代码:

 

结果:

 

        DateFormat类提供的Date parse(String source)方法可以将字符串转为其字面日期对应的Date对象,整个过程相当于日期格式化的逆操作。

        例如,将“2021-02-19”这个字符串转成Date对象,代码:

DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse("2021-02-19");
 总结:
代码:

 

结果:

 

        3.Calendar类
        Calendar提供了一个类方法getInstance(),以获得其类型的一个通用的对象。Calendar类的getInstance()方法返回一个Calendar对象,其日历字段已由当前日期和时间格式化,使用方法:

 

 

 

Calendar rightNow=Calendar.getInstance();


 

【例11.18】今天离中华人民共和国成立100周年差多少天
代码:

 

结果:

 

对Calendar类的使用的总结: 
(1)c.set(Calendar.DAY_OF_MONTH,0)获取的是上个月的最后一天,所以调用前需要将月份往后加一个月。

(2)Calendar.MONTH的第一个月是使用0记录的,所以在获得月份数字后要加1。年和日是从1开始记录的不需要加1。

(3)Calendar.DAY_OF_WEEK的第一天是周日,周一是第二天,周六是最后一天。

六.Runtime类
        Runtime类不能使用new关键字创建实例,只能通过Runtime.getRunntime()方法获取实例。

        1.执行本地命令
        本地命令指的是操作系统的命令。

 

 

        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);


 【例11.19】让Java程序执行Windows系统的help命令
代码:

 

结果:

 

        2.查看内存 
        Runtime类可以通过freeMemory()方法查看当前Java虚拟机可用内存的剩余量。

【例11.20】监控虚拟机内存使用情况
代码:

 

结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值