常用类与基础API复习
1.String类
- String的声明:final修饰、实现了Comparable接口
- String的不可变性
- String的两种定义方式:
- ①字面量的定义方式String s= “hello”;
- String的内存解析:字符串常量池、堆内存的使用
- ②new的方式:String s=new String(“hello”);
- String s=new String(“hello”);在内存中创建的对象的个数
- ①字面量的定义方式String s= “hello”;
- String的连接操作:+
- 常量+常量、变量+常量、变量+变量、concat(String otherString)
- String intern()
- 熟悉String的构造器、与其他结构之间的转换、常用方法
- 编码和解码:
- 编码:字符、字符串 -->字节、字节数组。对应着编码集
- 解码:字节、字节数组 --> 字符、字符串。对应着解码集
- 规则:解码集必须使用当初编码时使用的编码集,只要不一致,就可能出现乱码
- 编码和解码:
- String相关的算法问题。
2.StringBuffer、StringBuilder类
- 【面试题】String、StringBuffer、StringBuilder的区别
- 三个类的对比:String、StringBuffer、StringBuilder
String:不可变的字符序列;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)
StringBuffer:可变的字符序列;JDk1.0声明,线程安全,效率低;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)
StringBuilder:可变的字符序列;JDk5.0声明,线程不安全,效率高;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)
- 知道什么场景下使用StringBuffer、StringBuilder
- 源码启示:
如果开发中需要频繁的针对于字符串进行增,删,改等操作,建议使用StringBuffer或StringBuilder替换String
因为使用String效率低
如果开发中,不涉及到线程安全问题,建议使用StringBuilder来替换StringBuffer,因为使用StringBuilder效率高
如果开发中大体确定要操作的字符的个数,建议使用带int capacity参数的构造器,因为可以避免底层多次扩容的操作,性能更高
3.jdk8之前的日期、时间API
- System的currenTimeMillis()获取时间戳
获取当前时间对应的毫秒数,long类型的,时间戳
当前时间与1970年1月1日0时0分0秒之间的毫秒数
常用这个方法计算时间差
- 两个Date的使用
- 1—Java.util.Date
用两个构造器
两个方法的使用:①toSting() ②getTime
2—Java.sql.Data:对应着数据库中的Data类型
- SimpleDateFormat用于格式化、解析
格式化:日期--->字符串 解析:字符串--->日期
- Calendar日历类的使用
Calendar类(日历类):抽象类
Calender:日历类
①实例化: 由于Calender是一个抽象类,所以我们要创建其子类的实例,这里我们通过Calender的静态方法
getInstance()即可获取
②常用方法:get(int field) / set(int field,xx) / add(int field,xx) / getTime() / setTime()
4.jdk8中新的日期、时间API
- LocalDate、LocalTime、LocalDateTime–》类似于Calendar
实例化:now() / of(xxx,xxx,xxx)
方法:get() / withXxx() / plusXxx() / minusXxx() …
- instant—》类似于Data
实例化:now() / ofEpochMilli()
方法:toEpochMilli()
- DateTimeFormatter---->类似于SimpleDateFormat
用于格式化和解析LocalDate,LocalTime,LocalDateTime
5.比较器
- 自然排序涉及到Comparable
- compareTo(Object obj)
- 定制排序涉及到Comparator
- compare((Object obj1,(Object obj2)
其他API见其他文章有介绍,这里就不写了
了解