0%

常用类

常用类

本篇介绍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
2
3
4
5
6
7
new str = "hello";
// String->StringBuffer
// 方法1
StringBuffer stringBuffer1 = new StringBuffer(str);
// 方法2
StringBuffer stringBuffer2 = new StringBuffer();
stringBuffer2 = stringBuffer2.append(str);
1
2
3
4
5
6
// StringBuffer->String
StringBuffer stringBuffer = new StringBuffer("zzh");
// 方法1:使用toString
String s1 = stringBuffer.toString();
// 方法2:使用构造器
String s2 = new String(stringBuffer);

常用方法: 增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
2
3
4
5
6
7
8
9
10
// 获取当前系统时间
Date d1 = new Date();//获取当前系统时间
// 时间格式转换
SimpleDateFormat sdf = new SimpleDateFormat("时间格式");
String format = sdf.format(d1);
// 通过指定毫秒数获取对应时间
Date d2 = new Date(9234567);//获取当前系统时间
// 把一个格式化String转成对应的Date
String s = "1996年xxxx";
Date parse = sdf.parse(s);
Calender

抽象类,提供了一些日历字段。

通过getInstance()来获取实例,提供大量的方法和字段给程序员

1
2
3
// 获取实例
Calender c = Calender.getInsrance();
// 获取日历对象的某个日历字段
LocalDate
  • LocalDate:年月日、LocalTime:时分秒、LocaLDateTime:年月日+时分秒
1
2
3
4
// 使用now() 返回表示当前日期时间的对象
localDateTime ldt = LocalDateTime.now();
// 对日期时间进行格式化
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");

Instant 时间戳,提供了一系列和Date类型转换的方式

1
2
3
4
// 通过静态方法now()获取表示时间戳的对象
Instant now = Instant.now();
// 通过from把Instant转成Date
Date date = Date.from(now);

提供的更多方法:

MonthDay类检查重复时间、是否是闰年、增加日期的某个部分、使用plus方法测试增加时间的某个部分、