一、随堂复习
1. String类
-
String的声明:final修饰、实现了Comparable接口
-
String的不可变性
-
String的两种定义方式:① 字面量的定义方式 String s = "hello" ② new 的方式:String s = new String("hello");
-
String的内存解析:字符串常量池、堆内存的使用
-
String s = new String("hello");在内存中创建的对象的个数。
-
-
String的连接操作:+
-
常量 + 常量 、变量 + 常量 、变量+变量、concat(String otherString)
-
String intern()
-
-
熟悉String的构造器、与其他结构之间的转换、常用方法
-
编码和解码
-
编码:字符、字符串 --> 字节、字节数组。对应着编码集
-
解码:字节、字节数组 --> 字符、字符串。对应着解码集
-
规则:解码集必须使用当初编码时使用的编码集。只要不一致,就可能出现乱码!
-
-
-
String相关的算法问题。
2. StringBuffer、StringBuilder类
-
[面试题]String、StringBuffer、StringBuilder的区别
-
知道什么场景下使用StringBuffer、StringBuilder
3. jdk8之前的日期、时间API
-
System的currentTimeMillis()
-
两个Date的使用
-
SimpleDateFormat用于格式化、解析
-
Calendar日历类的使用
4. jdk8中新的日期、时间API
-
LocalDate、LocalTime、LocalDateTime -->类似于Calendar
-
Instant -->类似于Date
-
DateTimeFormatter --->类似于SimpleDateFormat
5. 比较器(重点)
-
自然排序涉及到Comparable
-
compareTo(Object obj)
-
-
定制排序涉及到Comparator
-
compare(Object obj1,Object obj2)
-
6. 其它API
了解
二、企业真题
2.1 String
1. 以下两种方式创建的String对象有什么不同?(*团)
String str = new String("test"); String str = "test";
前者:
一个是堆空间中new的对象。另一个是在字符串常量池中生成的字面量。
后者:
是在字符串常量池中生成的字面量。
2. String s = new String("xyz");创建了几个String Object? (新*陆)
两个
3. String a="abc" String b="a"+"bc" 问a==b?(网*邮箱)
是!
4. String 中 “+” 怎样实现?(阿*)
常量 + 常量 :
结果仍然存储在字符串常量池中,返回此字面量的地址。注:此时的常量可能是字面量,也可能是final修饰的常量
变量 + 常量 、变量+变量:
创建一个StringBuilder的实例,通过append()添加字符串,最后调用toString()返回一个字符串。(toString()内部new 一个String的实例)