Java的第十一章总结

11.1 包装类

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

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

包装类对应基本数据类型包装类对应基本数据类型
BytebyteShortshort
IntegerintLonglong
FloatfloatDoubledouble
CharactercharBooleanboolean

11.1.1 Integer类

常用方法:

ac754b95227a496a819a8bd399d2ebd7.png

例题:

5a2b14b51cd3436cafe5f416d57e840b.png

 

 Integer类提供的四个常量:

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

例题:

08e91bd0e2e644ef89ba0b31e0a7737b.png

11.1.2 Double类

 常用方法:37ee41c0715e41da9b8d8e399f35aa48.png

 例题:

e23f7b2d93f341a9aaccf6c2d13a2590.png

 

Double类提供的四个常量:

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

11.1.3Boolean类

常用方法:

b9d1682c2fc546b5945f554f02e3b3aa.png

例题:

 

41280aea7c854e11b40207d09e56ecd8.png 

11.1.4Character类

常用方法:

7bb9f6ebfd6847dd82222747d5b2cc3a.png

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

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

bd7597d8a43d44ce9da7e2516220c26e.png 

11.1.5 Number类

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

09f9e8efc42a4a018e07d1f0fa83a914.png 

 

11.2.1 数字格式化

数字格式化在解饮实际问题时应用非常普通,如表示其超市的商品价格,需要保留两位有效数字,数子格式化操作主要针对的是浮点型数据,包括 double 型利 noat型数据。在Java中使用 javraienrDecimalFormat 格式化数字,本节将着重讲解 Decima Format 类。

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代码中进行三角函数运算

3f4eac7939944b05bc35e2f123d4228c.png 

 

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代码中进行指数函数运算

037344b72e9343c486260e989dc18831.png

bafccbf8df3c42e58b3be8734e28efb5.png 

 

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 各场景下取整数函数的运算结果

1851931bda284b0da62f5f089f145cfd.png

42c5d39b0c0a4964a43ac00c1f469f4b.png 

  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 取最大值、最小值、绝对值的方法

da08fd3257964800b50e8c239daf6aef.png

1dd7d60ca6b047c6b3877f2ffac626d5.png 

 

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 获取不同取值范围、不同类型的随机数

4734b8f7703a4cd8b3257aa5cca00a17.png

14dce886cbdc4350aa533da2777de8a8.png 

 

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类进行数学运算

d84ae657eb5948d8bdb29cc764eb610f.png

3f7bb3764cea44309c001e9c2222782a.png 

 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个参数分别代表除数、商的小数点后的位数、近似处理模式

11.3 System 类 

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

方法功能描述
currentTimeMills()返回以毫秒为单位的当前时间
exit(int status)通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟子,该方法从不正常返回,可以将变量作为一个状态码,非零表示非正常终止,零表示正常
Map<String,String> 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 查看执行一万次字符串拼接所消耗的时间

0e428618856c40499bad4e959fef449b.png

92b2457f25a64d1da83a2a6669988f97.png 

 11.4 Scanner类

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

常用语法:

import java.util.Scanner

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

Scanner sc = new Scanner(System.in);

例11.15 猜数字游戏

926fa7c3fd0f47429736cc5f7c897298.png

f2a341ef90cd418f8df4ee4fbe87fb18.png 

 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 获取当前的日期和时间

c7ce265584c547bdb303c639ed0e4fec.png

 

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个格式化字符,让开发者自由编写

11.5.3 Calendar类

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

语法:

Calendar now = Calendar.getInstance();

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

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.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命令

1fa89aa2596a4aa3897cebbb1747d690.png

 86e6f42921fe4f18b19b826a07a0742e.png

 

 11.6.2 查看内存

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

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

c105139f0f5944e59d68470198625cb8.png

2dffaa9de71e4a9a819bcc06a771f7d3.png 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值