第十一章总结

1、包装类

1.Integer类

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

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

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

        MAX_VALUE:表示int类型可取的最大值,即。

        MIN_VALUE:表示int类型可取的最小值,即。

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

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

2.Double类

 Double类和Float类是对double、float基本类型的封装,它们都是Number类的子类,都是对浮点数进行操作,所以常用方法基本相同。

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

   创建一个DoubleDemo类,首先使用Double类的valueOf()方法创建一个Double对象,然后使用Double类的常用方法对该对象进行操作,并查看它们的显示结果。

  

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

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

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

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

3.Boolean类

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

在项目中创建BooleanDemo类,在主方法中以不同的构造方法创建Boolean对象,并调用booleanValue()方法将创建的对象重新转换为boolean类型数据输出。

 

     Boolean提供了以下3个常量:

        TRUE:对应基值true的Boolean对象。

        FALSE:对应基值false的Boolean对象。

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

4.Character类

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

  在项目中创建UpperOrLower类,在主方法中创建Character类的对象,通过判断字符的大小写状态确认将其转换为大写还是小写

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

        CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”。

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

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

    5.Number类

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

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

2数字处理

数字格式化

输出4,568,932

可见用0来会出现前面有0的情况

0表示在这个位置有数字显示数字没数字显示0

可改为#

可得到正确结果

在上面方法中得到的结果有更好的方法如

DecimalFormat df2=new DecimalFormat();
		df2.setGroupingSize(2);
		df2.setGroupingUsed(true);
		String dff2=df2.format(123456789);
		System.out.println(dff2);

 可以更快速得到

11.2.2math 类

三角函数

public static double sin(double a): 返回角的三角正弦。

public static double cos(double a): 返回角的三角余弦。

public static double tan(double a): 返回角的三角正切。

public static double asin(double a): 返回角的三角反正弦。

public static double acos(double a): 返回角的三角反余弦。

public static double atan(double a): 返回角的三角反正切。

public static double toRadians(double a): 将角度转换为弧度。

public static double toDegrees(double a): 将弧度转化为角度。

System.out.println(Math.toRadians(45));
		System.out.println(Math.tan(Math.toRadians(45)));

 指数函数

 Math类中与指数相关的函数方法如下。

        public static double exp(double num):用于获取e的a次方。
        public static double log(double num):用于取自然对数,即取lna的值。
        public static double log10(double num):用于取底数为10的a的对数。
        public static double sqrt(double num):用于取num的平方根,其中a的值不能为负值。
        public static double cbrt(double num):用于取a的立方根。
        public static double pow(double num1,double num2):用于取a的b次方。

        指数运算包括求方根、取对数以及求n次方的运算。
 

ublic class MathTest {

	public static void main(String[] args) {
    System.out.println(Math.cbrt(64));
		System.out.println(Math.pow(12,3));
		
		
	}

}

 取整函数

   在具体的问题中,取整操作使用也很普遍,所以Java在Math类中添加了数字取整方法。Math类中主要包括以下几种取整方法:

        public static double ceil(double num):返回大于等于参数的最小整数(向上取整)。
        public static double floor(double num):返回小于等于参数的最大整数(向下取整)。
        public static double rint(double num):返回与参数最接近的整数,如果存在两个相同接近的整数,则结果取偶数。
        public static int round(float num):将参数加上0.5后返回与参数最近的整数。
        public static long round(double num):将参数加上0.5后返回与参数最近的整数,然后强制转换为长整型。
取最大值、最小值、绝对值函数方法

在程序中最常用的方法就是最大值、最小值、绝对值等,Math类中包括的操作方法如下:

        public static double max(double a,double b):取a,b中的最大值。
        public static int min(int a,int b):取a,b中的最小值,参数为整形。
        public static long min(long a,long b):取a,b中的最小值,参数为长整型。
        public static float min(float a,float b):取a,b中的最小值,参数为单精度浮点型。
        public static double min(double a,double b):取a,b中的最小值,参数为双精度浮点型。
        public static int abs(int a):返回整形参数的绝对值。
        public static long abs(long a):返回长整型参数的绝对值。
        public static float abs(float a):返回单精度浮点型参数的绝对值。
        public static double abs(double a):返回双精度浮点型参数的绝对值。
3.Random类

  Random类是JDK中随机数生成器,可以通过实例化一个Random对象创建一个随机数生成器,语法如下:

Random r = Random();

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

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

Random r = new Random(seedValue);
        r:Random类对象。

        seedValue:随机数生成器的种子。

        在Random类中,提供了获取各种数据类型随机数的方法,下面例举几个常用的方法:

        public int nextInt():返回一个随机整数。

        public int nextInt(int n):返回大于等于0且小于n的随机整数。

        public int nextLong():返回一个随机长整数。

        public boolean nextBoolean():返回一个随机布尔型值。

        public float nextFloat():返回一个随机单精度浮点型值。

        public double nextDouble():返回一个随机双精度浮点型值

        public double nextGaussian():返回一个概率密度为高斯分布的双精度浮点型值。

4.BigInteger类

  BigInteger类的数字范围较Integer类的数字范围要大得多。前文介绍过Integer类是int的包装类,int的最大值为2³¹-1,如果要计算更大的数字,使用Integer类就无法实现了,所以Java中提供了BigInteger类来处理更大的数字。BigInteger类支持任意精度的整数,也即是说,在运算中BigInteger类可以准确地表示任何大小的整数值而不会丢失信息。

        在BigInteger类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。

        使用BigInteger类,可以实例化一个BigInteger对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。

        例如,将2转换为BigIntege类型,可以使用以下语句进行初始化操作:

BigInteger twoInstance = new BigInteger("2");
        注意:参数2的双引号不能省略,因为参数是以字符串的形式存在的。

        一旦创建了对象实例,就可以调用BigInteger类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作。下面列举了BigInteger类中常用的几种运算方法:

        public BigInterger add(BigInteger val):做加法运算。

        public BigInteger subtract(BigInteger val):做减法运算。

        public BigInteger muItiply(BigInteger val):做乘法运算。

        public BigInteger divide(BigInteger val):做除法运算。

        public BigInteger renmainder(BigInteger val):做取余操作。

        public BigInteger[] divideAndRemainder(BigInteger va):用数组返回余数和商,结果数组中第一个值位商,第二个值位余数。

        public BigInteger pow(int exponet):进行取参数的exponent次方操作。

        public BigInteger negate():取相反数。

        public BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作。

        public BigInteger shiftRight(int n):将数字右移n位,如果n位负数,做左移操作。

        public BigInteger and(Bigteger val):做与操作。

        public BigInteger or(Bigteger val):做或操作。

        public int compareTo(Bigteger val):做数字比较操作

        public boolean equals(Object x):当参数x是Bigteger类型的数字并且数值与对象实例的数值相等时,返回true。

        public BigInteger min(Bigteger val):返回较小的数值。

        public BigInteger max(Bigteger val):返回较大的数值。

5.BigDecimal类 

 BigDecimal类和BigInteger类都能实现大数字的运算,不同的是BigDecimal类加入了小数的概念。一般的float型和double型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到BigDecimal类。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值。在BigDecimal类中,常用的两个构造方法如下表所示。

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

   在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商小数点后的末位的处理,这些模式的名称与含义如下表所示。

3、System类 

 System类是JDK中提供的系统类,该类是用final修饰的,所以不允许被继承。System类提供了很多系统层面的操作,并且这些方法全部都是静态的。System类提供的较常用方法如下表所示。本节重点讲解利用System类控制台输出和计时这两个操作。

1.控制台输出字符
        System类提供了标准输入、标准输出和错误输出流,也就是说,System类提供了3个静态对象:in、out和err。本书中的代码多次使用了这些对象,最常见的就是out对象。在控制台输出字符串,输出的方法有两种,下面分别进行讲解。

        (1)不会自动换行的print()方法

        print()方法的语法如下:

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

        (2)可以自动换行的println()方法

        println()方法在print后面加上了“ln”后缀(就是line的简写),语法如下:

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

        print()方法与println()方法输出的对比效果如下表所示。

两种输出方法的效果比较
Java语法    运行结果    Java语法    运行结果
System.out.println("左");

System.out.println("中");

System.out.println("右");

左中右    
System.out.println("上");

System.out.println("中");

System.out.println("下");

        综上所述,Java输出换行的方法有以下两种:

System.out.print("\n");//利用换行符\n实现换行
System.out.println();//空参数即可实现换行
        误区警示:

        使用这两个输出方法时还要注意以下两点:

        (1)“System.out.println("\n");”会打印两个空行。

        (2)“System.out.print();”无参数会报错。
2.计时
        System.currentTimeMillis()方法可以获取自1970年1月1日零点至今的毫秒数。虽然Date日期类也有类似的方法,但代码会比System类多,所以System.currentTimeMillis()方法是为获取当前毫秒数最常用的方法。因为该方法的返回值精确到毫秒,所以可以利用该方法来记录程序的运行时间。


四、Scanner类

与c语言不同,Java从控制台中读出用户输入的值,用到的不是一行可以直接使用的代码,而是由一个叫Scanner的类来实现的。Scanner英文直译就是扫描仪,它的用途就和现实生活的扫描仪一样,可以把数字化信息转为人类可识别的文字。控制台输出内容用到了System.out就表示向控制台输出,System.in就表示从控制台输入,让Scanner扫描System.in就可以获取用户输入的值了。

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

import java.util.Scanner;    //引入Scanner类
        Scanner类提供了如下表所示的几种常用的方法,通过这些方法可以获取控制台中输入的不同类型的值。

Scanner类的几个常用方法
方法名    返回类型    功能说明    方法名    返回类型    功能说明
next()    String    查看并返回此扫描器获取的下一个完整标记    nextInt()    int    扫描一个值返回int类型
nextBoolean()    boolean    扫描一个布尔值标记并返回    nextLine()    String    扫描一个值返回String类型
nextByte()    byte    扫描一个值返回byte类型    nextLong    long    扫描一个值返回long类型
nextDouble()    double    扫描一个值返回double类型    nextShort    short    扫描一个值返回short类型
nextFloat()    float    扫描一个值返回float类型    close()    void    关闭此扫描器
        误区警示:

        nextLine()方法扫描的内容是从第一个字符开始到换行符为止,而next()、nextInt()等方法扫描的内容是从第一个字符开始到这段完整内容结束。

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

Scanner sc = new Scanner(System.in);
        System.in表示控制台输入流,在创建Scanner对象时把System.in作为参数,这样创建出的扫描器对象扫描的目标就是用户在控制台中输入的内容,再通过表中列出的方法将用户输入的内容转为Java的数据类型,就可以对数据进行加工了、显示了。
 

日期时间格式化
        如果在程序中直接输出Date对象,显示的是“MonFeb 29 17:39:50 CST 2016”这种格式的日期时间,那么应该如何将其显示为“2016-02-29”或者“17:39:50”这样的日期时间格式呢?Java中提供了DateFormat类来实现类似的功能。

        DateFormat类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化。DateFormat类提供了很多方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG和FULL4种:

        SHORT:完全为数字,如12.13.52或3:30pm。

        MEDIUM:较长,如jan12,1952。

        LONG:更长,如January12,1952或3:30:32pm。

        FULL:完全指定,如Tuesday、April12、1952AD或3:30:42pm PST。

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

DateFormat df = DateFormat.getDateInstance();
        使用getDateInstance()方法获取的是所在国家或地区的标准日期格式。另外,DateFormat类还提供了一些其他静态方法。例如,使用getTimeInstance()方法可获取所在国家或地区的时间格式,使用getDateTimeInstance()方法可获取日期和时间格式。

 例如,将当前日期按照DateFormat类默认格式输出:

DateFormat df = DateFormat.getInstance();
System.out.println(df.format(new Date()));
        结果如下:

2023/5/19 下午 15:32
        输出长类型格式的当前时间:

DateFormat df = DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println(df.format(new Date()));
        结果如下:

CST 下午 15:41:00
        输出长类型格式的当前日期:

        

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(df.format(new Date()));
        结果如下:

2023 年 5 月 19 日
        输出长类型格式的当前时间和当前日期:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
System.out.println(df.format(new Date()));
        结果如下:

2023 年 5 月 19 日 CST 上午 10:01:12
        由于DateFormat类是一个抽象类,不能用new创建实例对象。因此,除了使用getXXXInstance()方法创建其对象,还可以使用子类,如SimpleDateFormat类,该类是一个以语言环境相关的方式来格式化和分析日期的具体类,它允许进行格式化(日期→文本)、分析(文本→日期)和规范化。

3.Calendar类
        打开JavaAPI文档可以看到java.util.Date类提供的大部分方法都已经过时了,因为Date类在设计之初没有考虑到国际化,而且很多方法也不能满足用户需求,比如需要获取指定时间的年月日时分秒信息,或者想要对日期时间进行加减运算等复杂的操作,Date类已经不能胜任,因此JDK提供了新的时间处理类一Calendar日历类。
        Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。另外,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为 protected。

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

Calendar rightNow = Calendar.gerInstance();
        说明
        由于Calendar 类是一个抽象类,不能用new创建实例对象,因此除了使用getinstance()方法创建其对象,如果需要创建其对象,必须使用其子类,如 GregorianCalendar类。
6、Runtime类
        Runtime类是JDK提供的运行时类,该类为Java程序提供了与当前运行环境相连接的一个通道,Java程序可以利用该类对当前的运行环境执行一些简单的操作。Runtime类不能使用new关键字创建实例,只能通过Runtime.getRuntime()方法获取实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值