常用类
本篇介绍Java中常用的类及其函数。
包装类
包装类:八种基本数据类型对应的引用类型,是对基本数据类型的扩展,可以调用类中的方法。
boolean:Boolean、char:Character、数字类型:number
包装类和基本数据类型的相互转换:自动装箱和拆箱,底层调用valueOf()
包装类和String类转换:toString、parseInt
常用方法 Integer:MIN_VALUE、MAX_VALUE Character:isDigit、isLetter、isUpperCase、isLowerCase、isWhitespace、toUpperCase、toLowerCase
※String
结构剖析: String对象用于保存字符串,使用Unicode字符编码,一个字符占两个字节 实现Serializable和Comparable接口,字符串可以串行化、可以比较。 值是一个final类型,其指向的地址不能修改。 String是final类,不能被其他类继承
创建剖析: 1.直接赋值,String s = "zzh";
s指向常量池的空间地址 2.调用构造器,String s = new String("zzh");
指向堆中的空间地址,该地址指向常量池中的字符串
常用方法: equals区分大小写,判断内容是否相等 length字符串长度 indexOf获取字符在字符串中第一次出现的索引 substring截取指定范围的子串 charAt获取某索引处的字符
格式化字符串:format() 使用占位符,由后面的变量来替换。%s表示字符串,%d表示整数,%.2表示两位小数,%表示char
※StringBuffer
可变长度字符序列,是一个容器,可以对字符串内容进行删减。
结构剖析: 实现了Serializable接口,对象可以串行化。 value数组存放字符串内容,放在堆里,内容可以更新。 StringBuffer是final类,不能被其他类继承
构造器: StringBuffer():构建不带字符的字符串缓冲区,初始容量为16的char[] StringBuffer(CharSequence seq):构建一个字符串缓冲区,包含与seq相同的字符 StringBuffer(int capacity):不带字符,但具有指定初始容量capicity+16的字符串缓冲区 StringBuffer(String str):将内容初始化为指定的字符串内容
String和StringBuffer转换:
1 | new str = "hello"; |
1 | // StringBuffer->String |
常用方法: 增append、删delete、改replace、查indexOf、插入insert、获取长度length
※StringBuilder
是一个可变的字符序列,提供与StringBuffer兼容的API。 主要操作是append和insert,可以重载以接收任意类型的数据。
结构剖析: 继承了AbstractStringBuilder类,实现Serializable接口,可以串行化 StringBuffer是final类,不能被其他类继承 value数组存放字符串内容,放在堆里,内容可以更新。
String、StringBuffer、StringBuilder的比较
- StringBuffer、StringBuilder类似,代表可变的字符序列
- String是不可变字符序列,复用率高
- StringBuffer是可变序列,线程安全,效率较高:sync同步
- StringBuilder是可变序列,线程不安全,效率最高
Math
用于执行基本数学运算的方法,初等指数、对数、平方根和三角函数
常用函数:abs、pow、ceil、floor、round随机数[0,1)、sqrt、random、max、min
Arrays数组
包含一系列静态方法,用于管理或操作数组
常用方法: Arrays.toString(arr),返回数组的字符串形式 sort排序、binarySearch通过二分搜索法进行有序数组查找、copyOf数组元素的复制、fill数组的填充、 equals比较两个数组的内容是否完全一致、asList将一组值转换成list
sort自定义排序:接口编程+动态绑定+匿名内部类的综合使用
- 是重载的,也可以通过传入一个接口Comparator比较器来自定义排序。
- 传入两个参数:排序的数组arr、匿名内部类,要求实现compare方法。
- 数组顺序由compare方法返回值决定
System
exit退出当前程序
arraycopy:复制数组元素
currentTimeMillens:返回当前时间距离1970-1-1的毫秒数
gc:垃圾回收机制
BigInteger BigDecimal
BingInteger:保存较大的整型
BigDecimal:保存精度更高的浮点型
加减乘除运算需要使用对应的方法,add、subtract、multiply、divide
除法可以指定精度:divide(bigDecimal, BigDecimal.ROUND_CEILING)
日期类
Date
精确到毫秒,代表特定的瞬间。
SimpleDateFormat:格式和解析日期的类
1 | // 获取当前系统时间 |
Calender
抽象类,提供了一些日历字段。
通过getInstance()来获取实例,提供大量的方法和字段给程序员
1 | // 获取实例 |
LocalDate
- LocalDate:年月日、LocalTime:时分秒、LocaLDateTime:年月日+时分秒
1 | // 使用now() 返回表示当前日期时间的对象 |
Instant 时间戳,提供了一系列和Date类型转换的方式
1 | // 通过静态方法now()获取表示时间戳的对象 |
提供的更多方法:
MonthDay类检查重复时间、是否是闰年、增加日期的某个部分、使用plus方法测试增加时间的某个部分、