第十一章 常用类库

第十一章 常用类库_第1张图片

11.1 包装类

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

                        表11.1 包装类及其对应的基本数据类型

包装类 对应基本数据类型 包装类 对应基本数据类型
Byte byte Short short
Integer int Long long
Float float Double double
Character char Boolean boolean

11.1.1 Integer类

常用方法:

第十一章 常用类库_第2张图片

【例11.1】Integer类的常用方法

第十一章 常用类库_第3张图片

Integer类提供的四个常量:

  • MAX_VALUE:表示int类型可取的最大值(2^31-1)
  • MIN_VALUE: 表示int类型可取的最大值(-2^31)
  • SIZE:以二进制补码的形式表示int值的位数
  • TYPE:表示基本类型int的Class实例

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

第十一章 常用类库_第4张图片

11.1.2 Double类

常用方法:

第十一章 常用类库_第5张图片

 【例11.3】Double类的常用方法

第十一章 常用类库_第6张图片

Double类提供的四个常量:

MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数
MIN_EXPONENT: 返回int值,表示有限double变量可能具有的最小指数
NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量
POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量
 

11.1.3Boolean类

常用方法:

第十一章 常用类库_第7张图片

 【例11.4】Boolean类的常用方法

第十一章 常用类库_第8张图片

 11.1.4Character类

常用方法:

第十一章 常用类库_第9张图片

Character类中表示特定字符的常量:

CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”
UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”
TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”
【例11.5】Character类的常用方法

第十一章 常用类库_第10张图片

 11.1.5 Number类

是所有数值型的父类(抽象类)
数值型包装类的共有方法:

第十一章 常用类库_第11张图片

                                11.2数字处理

11.2.1数字格式化

                                表DecimalFormat类中的特殊字符及其说明

字符 说明
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示字符,如果该位不存在数字,则不显示
. 小数分割符或货币小数分隔符
- 负号
分组分隔符
E 分割科学记数法中的尾数和指数
% 放置在数字的前缀和后缀,将数字乘以100显示为百分数
\u2030 放置在数字的前缀或后缀,将数字乘以1000显示为千分数
\u00A4 放置在数字的前缀或后缀,作为货币记号
' 单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理

 下面以实例说明数字格式化的使用

【例11.6】DecimalFormat类的常用方法

import java.text.DecimalFormat;
public class DecimalFormatSimmpleDemo{
    //使用实例化对象时设置格式化模式
    static public void SimgleFormat(String pattern,double value){
        DecimalFormat myFormat = new DecimalFormat(pattern);//实例化DecimalFormat对象
        String output = myFormat.format(value);//将数字进行格式化
        System.out.println(value + " " + pattern + " " + output);
    }
    //使用applyPattern()方法对数字进行格式化
    static public void UsedApplyPatternMethodFormat(String pattern,double value){
        DecimalFormat myFormat = new DecimalFormat();//实例化DecimalFormat对象
        myFormat.applyPattern(pattern);//调用appPattern()方法设置格式化模板
        System.out.println(value + " " + pattern + " " + myFormat.format(value));
    }
    public static void main(String[]args){
        SimgleFormat("###,###,###",123456.789);
        SimgleFormat("000000000.###kg",123456.789);
        //按照格式模板格式化数字,不存在的位以0显示
        SimgleFormat("0000000.000",123.78);
        //调用静态UsedApplyPatternMethodFormat()方法
        UsedApplyPatternMethodFormat("#.###%",0.789);
        UsedApplyPatternMethodFormat("###.##",123456.789);
        UsedApplyPatternMethodFormat("0.00\u2030",0.789);
    }
}

 第十一章 常用类库_第12张图片

 11.2.2Math类

1、三角函数方法

Math类中包含的三角函数方法如下:

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):将弧度转换为角度。

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

第十一章 常用类库_第13张图片

 第十一章 常用类库_第14张图片

2. 指数函数方法:

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

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

第十一章 常用类库_第15张图片

第十一章 常用类库_第16张图片

3.取整函数方法:

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后返回与参数最近的整数,然后强制转换为长整型
例11.9 各场景下取整数函数的运算结果

第十一章 常用类库_第17张图片

 第十一章 常用类库_第18张图片

4.取最大值,最小值,绝对值函数方法

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):取a的绝对值
public static long abs(long a):取a的绝对值
public static float abs(float a):取a的绝对值
public static double abs(double a):取a的绝对值

例11.10 取最大值、最小值、绝对值的方法

第十一章 常用类库_第19张图片

 第十一章 常用类库_第20张图片

11.2.3 Random类

语法:Random r = new Random(seedvalue);

常见方法:

public int nextInt():返回一个随机整数
public int nextInt(int num):返回大于等于0且小于num的随机整数
public long nextLong():返回一个随机长整数值
public boolean nextBoolean():返回一个随机的布尔值
public float nextFloat():返回一个随机单精度浮点型值
public double nextDouble():返回一个随机双精度浮点型值
public double nextGaussian():返回一个概率密度为高斯分布的双精度浮点型值
例11.11 获取不同取值范围、不同类型的随机数

第十一章 常用类库_第21张图片

 第十一章 常用类库_第22张图片

11.2.4 BigInteger类

Java中用BigInteger类来处理更大的数字,支持任意精度的整数,它可以准确地表示任何大小的整数值而不会丢失信息。

BigInteger num = new BigInteger("2");

常用方法:

public BigInteger add(BigInteger val):加法运算
public BigInteger subtract(BigInteger val):减法运算
public BigInteger multiply(BigInteger val):乘法运算
public BigInteger divide(BigInteger val):除法运算
public BigInteger remainder(BigInteger val):取余操作
public BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数
public BigInteger pow(int n):进行取参数的n次方操作
public BigInteger negate():取相反数
public BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作
public BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作
public BigInteger and(BigInteger val):做与操作
public BigInteger or(BigInteger val):做或操作
public int compareTo(BigInteger val):做数字比较操作
public boolean equals(Object x):当参数x是BigInteger类型的数字并且数值与对象实例的数值相等时,返回true
public BigInteger min(BigInteger val):返回较小的数值
public BigInteger max(BigInteger val):返回较大的数值
例11.12 使用BigInteger类进行数学运算

第十一章 常用类库_第23张图片

 第十一章 常用类库_第24张图片

11.2.5 BigDecimal 类

与BigInteger类都能进行大数字运算不同的是加入了小数的概念,它支持商业计算,任何精度的定点数,用来精确计算货币值。
构造方法:

构造方法 功能说明
BigDecimal(double val) 实例化时将双精度浮点型转换为BigDecimal类型
BigDecimal(String val) 实例化时将字符串形式转换为BigDecimal类型

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

方法 功能说明
add(BigDecimal augend) 做加法操作
subtract(BigDecimal subtrahend) 做减法操作
multiply(BigDecimal multiplicand) 做乘法操作
divide(BigDecimal divisor,int scale,RoundingModeroundingMode) 做除法操作,方法中3个参数分别代表除数、商的小数点后的位数、近似处理模式

        在上述方法中,BigDecimal类中divide()方法有多种设置,用于返回商小数点后的末位的处理,这些模式的名称与含义如下表:
第十一章 常用类库_第25张图片

例11.13 使用BigDecimal类进行数学运算

第十一章 常用类库_第26张图片

 第十一章 常用类库_第27张图片

              11.3 System 类 

System类属于JDk提供的系统类,被final修饰,不允许被继承,所有方法属于静态。
常用方法:

方法 功能描述
currentTimeMills() 返回以毫秒为单位的当前时间
exit(int status) 通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟子,该方法从不正常返回,可以将变量作为一个状态码,非零表示非正常终止,零表示正常
Map getenv() 返回一个不能修改的当前系统环境的字符串映射视图
getenv(String name) 获取指定的环境变量值
getProperties() 确定当前的系统属性
getProperty(String key) 获取用指定键描述的系统属性
setIn(InputStream in) 重新分配标准输入流

11.3.1 控制台输出符

  1. 不会换行的输出:System.out.print("输出内容");
  2. 可以自动换行的输出:System.out.println("输出内容");

 11.3.2 计时

System.currentTimeMills()方法可以获取1970年1月1日零点至今的毫秒数,是最常见的方法,可以利用该方法来记录程序的运行时间。

例11.12 查看执行一万次字符串拼接所消耗的时间

第十一章 常用类库_第28张图片

 第十一章 常用类库_第29张图片

       11.4 Scanner类

使用Scanner类可以达到程序输入的目的。

常用语法:

import java.util.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 关闭此扫描器

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

Scanner sc = new Scanner(System.in);

例11.15 猜数字游戏

第十一章 常用类库_第30张图片

 第十一章 常用类库_第31张图片

        11.5 日期时间类 

11.5.1 Date类

构造方法:

构造方法 说明
Date() 分配Date对象并初始化此对象,以表示分配它的时间(精准到毫秒
Date(long date) 分配Date对象并初始化对象,以表示自标准基准时间(即1970年1月1日 00:00:00GMT)起经过指定毫秒数date后的时间

常用方法:

方法 说明
after(Date when) 测试当前日期是否在指定的日期之后
before(date when) 测试当前日期是否在指定的日期之前
getTime() 获得1970年1月1日 00:00:00GMT开始到现在所经过的毫秒数
setTime(long time) 设置当前Date对象所表示的日期时间值,该值用来表示1970年1月1日 00:00:00GMT以后time毫秒的时间点


例11.16 获取当前的日期和时间

第十一章 常用类库_第32张图片

 第十一章 常用类库_第33张图片

11.5.2 日期时间格式化

使用DateFormat类实现日期时间的输出
格式化风格:

  • SHORT:完全为数字
  • MEDIUM:较长
  • LONG:更长
  • FULL:完全指定

 使用DateFormat可以自定义日期时间格式

DateFormat df = DateFormat.getDateInstance();

getDateInstance()方法获取所在国家或地区的标准日期格式
常用方法:

方法 说明
format(Date date) 将一个Date对象实例格式化为日期/时间字符串
getCalendar() 获取与此日期/时间格式器关联的日历
getDateInstance() 获取日期格式器,该格式器具有默认语言环境的默认格式化风格
getDateTimeInstance() 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格
getInstance() :获取为日期和时间使用SHORT风格的默认日期/时间格式器
getTimeInstance() 获取时间格式器,该格式器具有默认语言环境的默认格式化风格
parse(String source) 将字符串解析成一个日期,并返回这个日期的Date对象

SimpleDateFormat类提供了19个格式化字符,让开发者自由编写
SimpleDateFormat的格式化字符:

第十一章 常用类库_第34张图片

常用时间格式:

第十一章 常用类库_第35张图片

例11.17 以中文形式打印当前 的日期和时间

第十一章 常用类库_第36张图片

11.5.3 Calendar类

由于在Date类的设计没有考虑到国际化,所以大部分方法都不被使用,而且很多方法也无法满足用户需求,因此JDK提供了Calendar日历类
其操作日历字段,这些字段和方法都被定义为protected

语法:

Calendar now = Calendar.getInstance();

Calendar类提供的常用字段及说明

第十一章 常用类库_第37张图片

Calendar类的常用方法:

方法 说明
add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
after(Objecrt when) 判断此Calendar对象表示的时间是否在指定Object表示的时间之后,返回判断结果
before(Object when) 判断此Calendar对象表示的时间是否在指定Object表示的时间之前,返回判断结果
get(int field) 返回给定日历字段的值
getInstance() 使用默认时区和语言环境获得的一个日历
getTime() 返回一个表示此Calendar对象时间值(从历元至现在的毫秒偏移量)的Date对象
getTimeInMills() 返回此Calendar对象的时间值,以毫秒为单位
roll(int field,boolean up) 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段
set(int field,int value) 将给定的日历字段设置为给定值
set(int year,int month,int date) 设置日历字段YEAR,MONTH,DAY_OF_MONTH的值
set(int year,int month,int date,int hourofday,int minute) 设置日历字段YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE的值
set(int year,int month,int date,int hourofday,int minute,int second) 设置日历字段YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE,SECOND的值
setTime(Date date) 使用给定的Date对象设置此Calendar对象的时间
setTimeInMills(long mills) 使用给定的long值设置此Calendar对象的当前时间值

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

第十一章 常用类库_第38张图片

 第十一章 常用类库_第39张图片

     11.6 Runtime类 

Runtime是JDK提供的运行时类,可以用来获取运行时间。
常用方法:

方法 功能描述
getRuntime() 返回与当前Java应用程序相关的运行时对象
exec(String command) 在单独的进程中执行指定的字符串命令
exec(String[] cmdarray) 在单独的进程中执行指定命令和指令参数
totalMemory() 返回Java虚拟机中的内存总量
freeMemory() 返回Java虚拟机中的空闲内存量
load(String filename) 加载作为动态库的指定文件名
loadLibrary(String libname)

加载具有指定库名的动态库

11.6.1 执行本地命令
本地命令指操作系统的命令
Runtime类的exec()方法重载形式:

Process exec(String command)

Process exec(String[] cmdarray)

command:要执行的系统命令
cmdarray:要执行的命令和相应的命令参数 ,字符串数组类型

第一种重载方式的代码:

Runtime.getRuntime().exec("java hello.java");

第二种重载方式的代码: 

String command[] = {"javac","hello.java"};
Runtime.getRuntime().exec(command)

开发可以使用getInputStream()方法获取进程返回的信息
Process类常用方法:

方法 功能描述 方法 功能描述
destroy() 结束进程 getInputStream() 获取进程的输入流
getErrorStream() 获取进程的错误流 getOutputStream() 获取进程的输出流

例11.19 让Java程序执行Windows系统的help命令

第十一章 常用类库_第40张图片

 第十一章 常用类库_第41张图片

11.6.2 查看内存

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

例11.20 监控虚拟机内存使用情况

第十一章 常用类库_第42张图片

 第十一章 常用类库_第43张图片

你可能感兴趣的:(java,jvm,开发语言)