十三、常用类
1.包装类
出于性能方面的考虑,java为数值使用基本数据类型,而不是对象
有时需要创建表示基本类型的对象,为了在类中存储基本类型,需要将基本类型包装的一个类中
8个包装类:Byte,Short,Integer,Long,Float,Double,Character,Boolean
(1)Character包装器
Character是char的包装器
构造方法:Character(char c);
返回封装的字符:charValue()
(2)Boolean包装器
Boolean是boolean的包装器
构造方法:Boolean(boolean b);(1.8版本可以用字符串"true""false"不区分大小写)
Boolean(String s);
返回boolean值:booleanValue()
(3)数据类型的包装器类
·构造方法
所有数值类型包装器都定义了用于从给定数值或数值的字符串表示形式构造对象的构造方法,如果没有包含有效数字值,就会抛出数字转换异常
·从包装器对象中提取数值
byte:byteValue()
short:shortValue()
int:intValue()
long:longValue()
float:floatValue()
double:doubleValue()
(4)将包装器对象转换成字符串
类型包装器都重写了toString()方法,该方法可以将数值转换成字符串形式
(5)自动装箱与自动拆箱
自动装箱:只要需要基本类型的对象,就自动将基本类型自动装箱进相应的类型包装器中
自动拆箱:当需要时自动拆箱已装箱对象数值
(6)数值与字符串之间的转换
数值--->字符串:toString()方法
字符串--->数值:
byte:parseByte()方法
short:parseShort()方法
int:parseInt()方法
long:parseLong()方法
float:parseFloat()方法
double:parseDouble()方法
boolean:parseBoolean()方法
(7)字符分类
判断ch是否是数字:static boolean isDigit(char ch)
判断ch是否是字母:static boolean isLetter(char ch)
判断ch是否是字母或数字:static boolean isLetterOrDigit(char ch)
判断ch是否是小写字母:static boolean isLowerCase(char ch)
判断ch是否是大写字母:static boolean isUpperCase(char ch)
判断ch是否是空格字符:static boolean isSpaceChar(char ch)
判断ch是否是空白字符:static boolean isWhitespace(char ch)
(8)包装类中其它常用的常量和方法
·表示int数据类型的最大取值数:Integer.MAX_VALUE
·表示int数据类型的最小取值数:Integer.MIN_VALUE
·长度:Integer.SIZE
2.String
(1)String类介绍
·创建的每个字符串实际上都是String类的对象,即字符串字面值实际上也是String对象
·String类型的对象是不可变的:一旦创建了一个String对象,其内容就不能再改变,即一旦创建了一个String对象,就不能改变该字符串包含的字符
Stirng类型对象中的字符串是不可改变的,是指创建了String实例后不能修改String实例的内容 , 但是可以修改String引用变量,使其指向其他String对象
·对于那些需要能够修改的字符串的情况,java提供了两个选择:StringBuffer类和StringBuilder类,这两个类都包含在创建之后可以进行修改的字符串
·String、StringBuffer和StringBuilder类都是在java.lang包中定义的,这三个类都实现了CharSequence接口
(2)String类的构造方法
·String()
·String(char[] chars)
·String(char[] chars,int startIndex,int numChars)
·String(String strObj)
·直接使用字符串创建String对象
(3)字符串的比较
字符串相等性比较:
比较两个字符串对象的内容是否相同:equals()方法
其它比较方法:
·boolean equalslgnoreCase(String s)
不考虑大小写进行比较
·boolean endWith(String s)
测试字符串是否以指定的后缀结束
·boolean startsWith(String s)
测试字符串是否以指定的前缀开始
(4)字符串查找
·boolean contains(CharSequence s)
当且仅当此字符串包含指定的char值序列时,返回true
CharSequence 表示字符串序列,是String的父类
·int indexOf(int ch)和int indexOf(String str)
返回指定字符/子串第一次出现处的索引
·int lastIndexOf(int ch)和int lastIndexOf(String str)
返回指定字符/子串最后一次出现处的索引
(5)字符串修改
·String concat(String str)
将指定字符串连接到此字符串的结尾,concat()与"+"执行相同的功能
·String replace(char oldChar, char newChar)
通过用newChar替换此字符串中出现的所有oldChar得到并返回一个新的字符串
·String toLowerCase()
使用默认语言环境的规则将此String中的所有字符都转换为小写。
·String toUpperCase()
使用默认语言环境的规则将此String中的所有字符都转换为大写。
·String trim( )
删除前部空白和尾部空白,返回字符串的副本
(6)提取字符与字符串
·char charAt(int index)
返回指定索引处的char值
·char[ ] toCharArray()
将此字符串转换为一个新的字符数组
·String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串,该子字符串始于指定索引处的字符,一直到此字符串末尾。
·String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex处开始,一直到索引endIndex-1处的字符
(7)其它字符串常用方法
·int length()
返回此字符串的长度
注意:数组的长度为数组对象.length 属性
·String[] split(String regex)
根据给定正则表达式的匹配拆分字符串
3.StringBuffer和StringBuilder
(1)StringBuffer类和StringBuilder类介绍
String:长度固定、不可修改的字符序列
StringBuffer:可增长、可写入的字符序列
StringBuilder:以增加java的字符串处理能力,提供与StringBuffer相同的功能
区别:
·StringBuffer类是线程安全的,而StringBuilder则不是,即不保证其对象的同步性,在多线程环境中是不安全的
·StringBuilder在性能上要比StirngBuffer好一些
(2)StringBuffer类的构造方法
·StringBuffer( )
默认预留16个字符的空间
·StringBuffer(int size)
size指定预留的字符空间
·StringBuffer(String str)
额外预留16个字符的空间
·StringBuffer(CharSequence chars)
额外预留16个字符的空间
(3)StringBuffer类的常用方法
·append ()
将各种其它类型数据的字符串表示形式连接到调用StringBuffer对象的末尾
·insert ()
在指定位置插入参数提供的内容,返回修改后的该StringBuffer对象引用
·StringBuffer delete (int start,int end)
删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用
·StringBuffer deleteCharAt(int index)
移除指定位置的字符,返回修改后的该StringBuffer对象引用
·StringBuffer reverse()
将字符序列逆序,返回修改后的该StringBuffer对象引用
·StringBuffer setCharAt( (int index,char ch)
将指定索引处的字符设置为 ch,返回修改后的该StringBuffer对象引用
注意:StringBuffer对象不能使用"+="赋值
(4)长度与容量的概念
长度:StringBuffer中实际保存的字符的个数
容量:已经分配的空间大小
·int length()
获取StringBuffer对象的当前长度
·void setLength(int len)
设置StringBuffer对象中字符串的长度
当增加字符串的大小时,会向末尾添加空字符
如果调用setLength()时使用的值小于length()返回的当前值,则超出新长度的字符将丢失
·int capacity( )
获取StringBuffer对象的当前容量
·void ensureCapacity(int minCapacity)
设置缓存的大小
4.Math
(1)Math介绍
Math类中封装了常用的数学运算,包含了用于执行基本数学运算的属性和方法
(2)Math类的常量
·自然对数e:E
·圆周率Π:PI
(3)Math类的常用方法
·Math.ceil()
向上取整,也就是往较大的数取整
·Math.floor()
向下取整,也就是往较小的数取整
·Math.round()
四舍五入取整
·Math.sqrt()
开平方:其可以用与byte,short,int,long类型都可以,跟数学中一样其中的值不能为负数
·Math.pow(a,b)
取次幂:其中a和b可以为byte,short,int,long类型都可以,正负值也都行
·Math.max(a,b)
取最大值:a和b的数据类型可以为byte,short,int,long,如果它们的数据类型不同的话,较小的数据类型就会自动转换成较大的数据类型
·Math.min(a,b)
取最小值:a和b的数据类型可以为byte,short,int,long,如果它们的数据类型不同的话,较小的数据类型就会自动转换成较大的数据类型
·Math.random()
取随机数:其随机数的大小为[0.1)
5.Random
(1)Random介绍
用于生成伪随机数的流
(2)Random类的常用方法
·int nextInt()
生成一个介于 0(包含)到 "Integer.MAX_VALUE"(不包含)之间的随机整数
·int nextInt(int bound)
生成一个介于 0(包含)到指定值(不包含)之间的随机整数
·long nextLong()
生成一个介于 0(包含)到 `Long.MAX_VALUE`(不包含)之间的随机长整数
·double nextDouble()
生成一个介于 0.0(包含)到 1.0(不包含)之间的随机双精度浮点数
·float nextFloat()
生成一个介于 0.0(包含)到 1.0(不包含)之间的随机单精度浮点数
·boolean nextBoolean()
生成一个随机的布尔值
6.Date类
Date类封装了当前日期和时间
(1)Date类的构造方法
·public Date()
使用当前日期和时间初始化对象
·public Date(long date)
date为自从1970年1月1日子时经历的毫秒数
(2)常用方法
·long getTime()
返回从1970年1月1日午夜开始已经流逝的毫秒数
·void setTime(long time)
将日期和时间设置为time所指定的值,time是是自从1970年1月1日午夜开始已经流逝的毫秒数
·String toString()
将调用的Date对象转换成字符串并返回结果
7.Calendar与GregorianCalendar类
Calendar是抽象类,提供了一套方法将毫秒数形式的时间转换成大量有用的组分,例如年、月、日、小时、分和秒。
GregorianCalendar是Calendar的具体实现,它实现了您熟悉的常规的格林尼治日历。Calendar类的getInstance()方法通常会返回一个使用默认地区和时区下的当前时间初始化的GregorianCalendar对象。
8.SimpleDateFormat类
一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
|----|---------------|----|---------------|
| 字母 | 描述 | 字母 | 描述 |
| G | 纪元标记 | s | 秒数 |
| y | 年份 | S | 毫秒数 |
| M | 月份 | E | 星期几 |
| d | 一个月的日期 | D | 一年中的日子 |
| h | A.M/P.M(1-12) | w | 一年中的几周 |
| H | 一天中的小时 | a | A.M/P.MA |
| m | 分钟数 | K | A.M/P.M(0-11) |
| z | 时区 | k | 一天中的小时 |