11.1包装类:将基本数据类型封装在包装类中。
包装类 | 数据类型 |
Byte | byte |
Short | short |
Integer | int |
Long | long |
Float | float |
Double | double |
Character | char |
Boolean | boolean |
11.1.1Integer类:
java.lang 包中的 Integer 类、Byte类、Short 类和 Long 类,分别将基本数据类型int、byte、shor和long成一类,于这类都是Number 类的子类,区别就是封装不同的数据类型,其包含方法基本相同,所以本节以 Integer 类为例讲解整数包装类。
ateger 类一本数据类型int的值,该类的对象包含一个int 类型的字段。此外,该类提供了多个方法,能在int 类型和String类型之间互相转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。Integer 类的常用方法如表11.2所示。
11.1.2Double类 :
Double 类和Float 类是对 double、float 基本类型的封装,”它们都是Number类的子类,都是对浮点数进行操作,所以常用方法基本相同,本节将对 Double 类进行行讲解。对于 Float 类,可以参考Double类的相关内容。
Double类在对象中包装一个基本类型为double的值,每个 Double 类的对象都包含一个double 类型的字段。此外,该类还提供多个方法,可以将 double 类型转换为 String 类型,将 String 类型转换为doublo类型,也提供了其他一些处理 double类型时有用的常量和方法。
Double 类主要提供了以下常常量:
MAX EXPONENT:返回 int 值,表示有限 double变量可能具有的最大指数。
MIN EXPONENT:返 回int 值,表示标准化 double变量可 能具有的最小指数。
NEGATIVE INFINITY 返回 double 值,表示保存 double类 类型的负无穷大值的常量。
POSITIVE INFINITY: 返回double值,表示保存double类 型的正无穷大值的常量。
11.1.3 Boolean类:
Boolean 类将基本类型为boolean 的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean 的字段。此外,此类还为 boolean 类型和 String类型的相互转换提供了许多方法,并提供了处理boolean类型时非常有用的其他一些常量和方法。Boolean 类的常用方法如表11.4所示。
11.1.4Character类:
Character类在对象中包装一个基本类型为char的值,该类提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然。Character类提供了很多方法来完成对字符的操作,常用的方法如表11.5所示。
表11.5 Character类的常用方法。
Character 类提供了大量表示特定字符的常量, 例如:
M CONNECTOR PUNCTUATION:返回by te型值,表示Unicode规范中的常规类别“Pc”。
UNASSIGNED:返回byte型值,表示U nicode 规范中的常规类别“Cn”。
TITLECASE LETTER:返回byte型值, 表示Unicode规范中的常规类别“Lt”。
11.1.5Number类:
对于数值型的包装类类,它们有一个共同的父类--Number类,该类是一个抽象类,它是Byte、Integer、Short、Long、Flo oat 和 Double 类的父类,其子类必须提供将表示的数值转换为byte、int、short、long、float和double的的方法。例如,doubleValue()方法返回双精度浮点值,floatValue()方法返回单精度浮点值,这些方法如表11.6 所示。
11.2数字处理
在 Java语言中,提供了一个执行数学基本运算的Math类,该类包括常用的数学运算方法,如角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数方法。
在实际开发中,随机数的使用是很普遍的,所以要掌握生成随机数的操作。在 Java 中主要提供了时种生成随机数的方式,分别为调用 Math类andom方法生成随机数和调用 Random 类生成各种数据类型的随机数。
Java中,还提供了大数字的操作类,即javamath.BigInteger 类与java.math.BigDecimal 类。这内个美用于高精度计算,其中BigInteger类是针对整数的处理类,而BigDecimal类则是针对大小数的处理类。
11.2.1数字格式化: double型和 float型数据 在Java中使用java.tex DecimalFormat格式化数字
在 Java 中,没有格式化的数据遵循以下原则:
如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。 如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。
DecimalFormatberFormat一个子类,用于格式化十进制数字。它可以将一些数字格化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。-情况下,可以在实例化DecimalFormat象时传数字格式,也可以通过DecimalFormat 类中 applyPattern()方法来实现数字格式化。
当格式化数字时,可在DecimalFormat用一特字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。
字符 | 说明 |
0 | 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0 |
# | 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符:如果该位不存在数字,则不显示 |
. | 小数分隔符或货币小数分隔符 |
- | 负号 |
, | 分组分隔符 |
E | 分隔科学记数法中的尾数和指数 |
% | 放置在数字的前缀或后缀,将数字乘以100显示为百分数 |
\u2030 | 放置在数字的前缀或后缀,将数字乘以1000 显示为千分数 |
\u00A4 | 放置在数字的前缀或后缀,作为货币记号 |
' | 单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理 |
11.2.2.Math类:
Math类提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法大值、最小值,以及平均值函数方法。
1.三角函数方法
Math类中包含的三角函数方法如下:
public static double sin(doublea);返回角的三角正弦。
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 angdeg):将角度转换为弧度。
public static double toDegrees(double angrad):将弧度转换为角度。
2.指数函数方法
Math 类中与指数相关的函数方法如下。
public static double exp(double a):用于获取e的a次方,即取e^a。
public static double log(double a):用于取自然对数,即取 lna 的值。
public static double log10(double a):用于取底数为10的a的对数。
public static double sqrt(doublea):用于取a的平方根,其中a的值不能为负值。
public static double cbrt(double a):用于取 a 的立方根。
public static double pow(double a,double b):用于取 a 的 b 次方。
3.取整函数方法
public static double ceil(double a):返回大于等于参数的最小整数。向上取整
public static double floor(double a):返回小于等于参数的最大整数。向下取整
public static double rint(double a):返回与参数最接近的整数,如果存在两个同样接近的整数,则结果取偶数。
public static int round(float a): 将参数加上 0.5 后返回与参数最近的整数。
ublic static long round(doublea):将参数加上05回与参数最近的整数,然后强制转换
长整型。
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(longa,long b):取a与b之间的最小值,参数为长整型。
public static float min(floata,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):返回双精度浮点型参数的绝对值。
11.2.3Random类
生成随机数语法 Random r=new Random();
public int nextintQ:返回一次随机整数。
public int nextInt(int n):返回大于等于0且小于n的随机整数。
public long nextLong):返回一个随机长整型值。
public boolean nextBooleanO:返回一个随机布尔型值。
public float nextFloatO:返一个随机单精度浮点型值。
public double nextDoubleO:返回一个随机双精度浮点型值。
public double nextGaussianO:返回一个概率密度为高斯分布的双精度浮点型值。
11.2.4BigInteger类
只能存整.
BigInteger类的数字范围较Integer类的数字范围要大得多。前文介绍过Integer类是int的包装类 int的最大值为2^31-1,如果要计算更大的数字,使用Integer类就无法实现了,所以Java 中提供了 Biginteger 类来处理更大的数字。Biglnteger类支持任意精度的整数,也就是说,在运算中Bigintega类可以准确地表示任何大小的整数值而不会丢失信息。
在Biginteger类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数最大公约数以及判断是否为质数等操作。
使用BigInteger 类,可以实例化一个BigInteger对象,并自动调用相应的构造函数。BigInteg具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
例如,将2转换为Biglnteger 类型,可以使用以下语句进行初始化操作:
Biginteger twolnstance=new BigInteger("2");
public Biglnteger add(Biglnteger val):做加法运算。
public BigInteger subtract(BigInteger val):做减法运算。
public Biglnteger multiply(BigInteger val):做乘法运算。
public BigInteger divide(BigInteger val):做除法运算。
public BigInteger remainder(BigInteger val):做取余操作。
public BigInteger[ divideAndRemainder(BigInteger val):用数组返余数和商,结果
一个值为商,第二个值为余数。
public BigInteger pow(int exponent):进行取参数的 exponent 次方操作。
public BigInteger negate):取相反数。
public BigInteger shiftLef(int n):将数字左移n位,如果n为负数,做右移操作
public BigInteger shifRight(int n):将数字右移n位,如果n为负数,做左移操作。
public BigInteger and(Biglnteger val):做与操作。
public BigInteger or(BigInteger val):做或操作。
public int compareTo( BigInteger val):做数字比较操作。
public boolean equals(Objectx): 当参数x是BigInteger类型的数字并且数值与对象实例相等时,返回 true
Mpublic BigInteger min(BigInteger val):返回较小的数值
public BigInteger max(BigInteger val):返回较大的数值。
11.2.5BigDecimal 类
BigDecimal类和BigInteger类都能实现大数字的运算,不同的是BigDecimal类加入了小数的概念。
一般的 float 型和 double 型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值。
BigDecimal(double val) 实例化时将双精度浮点型转换为BigDecimal类型
BigDecimal(String val) 实例化时将字符串形式转换为 BigDecimal类型
BigDecimal类实现的加、减、乘、除的方法方法 功能说明 :
add(BigDecimal augend) 做加法操作
subtract(BigDecimal subtrahend) 做减法操作
multiply(BigDecimal multiplicand) 做乘法操作
divide(BigDecimal divisorint scale,RoundingModeroundingMode) 做除法操作,方法中3个参数分别代表除数、商的小数点后的位 数、近似处理模式
11.3System类
是java中提供的系统类,该类final修饰的,所以不允许被继承,system类提供了许多系统层面的操作方法,这些方法是静态。
11.3.1控制输入台输出字符,system类提供了三个静态对象,in,out,err。
1.不会自动换行的orint()方法
System.out.print();
2.会自动换行的println()方法
System.out.println();
11.3.2计时
11.4Scanner类
扫描器,让scanner扫描System.in可获取用户输入的数
11.5日期时间类
11.5.1Date类
Date 类的构造方法及其说明:
Date()分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)
Date(long date)分配Date对象并始化此对象,表示自标准基准时间(即1971月1日00:00:00GMT)起经过指定毫秒数 date 后的时间
after(Date when) 测试当前日期是否在指定的日期之后
before(Date when) 测试当前日期是否在指定的日期之前
getTime() 获得自1970年1月1日00:00:00GMT开始到现在所经过的毫秒数
setTime(long time) 设置当前Date对象所表示的日期时间值,该值用以表示1970年1月100:00:00MT 以后 time毫秒的时间点
11.5.2日期时间格式化
1.DateFormat类是日期时间格式化子类的抽象类,不可用new 直接创建对象,需使用匿名内部类可以按照指定的格式对日期或时间进行格式化。 DateFormat类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间 Formatter,格式化风格主要包括 SHORT、MEDIUM、LONG和FULL 4种:
SHORT:完全为数字,如 12.13.52或3:30pm。
MEDIUM:较长,如 Jan 12,1952。
LONG:更长,如January12,1952或3:30:32pm。
MFULL:完全指定,如 Tuesday、April 12、1952AD或3:30:42pmPST。
DateFormat df =DateFormat.getDatelnstance();
DatrFormat的常用方法及说明:
format(Date date) 将一个Date对象实例格式化为日期/时间字符串
getCalendar() 获取与此日期/时间格式器关联的日历
getDateInstance() 获取日期格式器,该格式器具有默认语言环境的默认格式化风格
getDateTimeInstance() 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格getinstancc()获取为日期和时间使用SHORT风格的默认日期/时间格式器
getTimeinstance() 获取时间格式器,该格式器具有默认语言环境的默认格式化风格
parse(String source) 将字符串解析成一个日期,并返回这个日期的 Date 对象
2.SimpleDateFormat类
是DateFormat的子类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类,提供了19个格式化字符。允许进行格式化(日期——>文本),分析(文本——>日期)和规范化。
字母 | 日期或时间元素 | 类型 | 示例 |
G | Era标志符 | Text | AD |
y | 年 | Year | 199;96 |
11.5.3Calendar日历类:
是一个抽象类,
Calender提供了一个类方法----getInstance(),以此获得此类型的一个通用对象。
语法如下:
Calendar类提供的常用字段及说明
Calendar rightNow = Calendar.getInstance();
Calendar类提供的常用方法及其说明
add()方法和roll()方法都用来为给定的日历字段添加或减去指定的时间量,他们主要区别在于:使用add()方法时会影响大的字段,像数学里的加法进位或错位,而使用roll()方法设置的日期字段只是进行增加或减少,不会改变更大的字段。
11.6Runtime类
是jdk提供的运行时类,该类为java程序提供了与当前运行环境相连接的一个通道,可利用该类对当前的运行环境执行一些简单操作,Runtime类不能使用new关键字创建实例,只能通过Runtime.getRuntime()方法获取。
11.6.1执行本地命令,系统操作的命令( Linux系统下就表示shell命令,windows系统下表示cmd)
Runtime类提供exec()方法让java代码可以执行系统的命令,exec()方法有多种重载形式。
Process exec(String command)要执行的命令字符串类型
process exec(String[] cmdarray)
exec()方法会返回一个Process对象。process类是java中进程类,该类是抽象类不能使用new关键字创建实例。可以使用getInputStream()方法获取进程返回的信息。
方法 | 功能描述 | 方法 | 功能描述 |
destroy() | 结束进程 | getInputStream() | 获取进程的输入流 |
getErrorStream() | 获取进程的错误流 | getOutputStream() | 获取进程的输出流 |
11.6.2查看内存
Runtime 类可以通过 freeMemory()方法查看当前 Java 虚拟机可用内存的剩余量。如果程序能够实时监控内存剩余量,就可以尽量控制程序对内存的占用,从而避免出现“内存溢出”的情况。同样,也可以用来对测试程序性能,检验程序算法是否导致内存紧张。