- 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相关的算法问题。
- [面试题]String、StringBuffer、StringBuilder的区别
- 知道什么场景下使用StringBuffer、StringBuilder
- System的currentTimeMillis()
- 两个Date的使用
- SimpleDateFormat用于格式化、解析
- Calendar日历类的使用
- LocalDate、LocalTime、LocalDateTime -->类似于Calendar
- Instant -->类似于Date
- DateTimeFormatter --->类似于SimpleDateFormat
- 自然排序涉及到Comparable
- compareTo(Object obj)
- 定制排序涉及到Comparator
- compare(Object obj1,Object obj2)
了解
String str = new String("test");
String str = "test";
略
两个
是!
常量 + 常量 :略
变量 + 常量 、变量+变量:创建一个StringBuilder的实例,通过append()添加字符串,最后调用toString()返回一个字符串。(toString()内部new 一个String的实例)
类似问题:
> String被哪些类继承?(网*邮箱)
> 是否可以继承String类?(湖南*利软件)
> String 是否可以继承?(阿*)
是
规定不可变。
String:提供字符串常量池。
可以。从jdk7开始可以使用
。。。
String str = "hello";
String subStr = str.subString(1,3); //底层是new的方式返回一个subStr,实体内容是"el"
类似问题:
> String 和 StringBuffer区别?(亿*国际、天*隆、*团)
> StringBuilder和StrignBuffer的区别?(平*金服)
> StringBuilder和StringBuffer的区别以及实现?(*为)
> String:不可变的字符序列;底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)
> StringBuffer:可变的字符序列;JDK1.0声明,线程安全的,效率低;底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)
> StringBuilder:可变的字符序列;JDK5.0声明,线程不安全的,效率高;底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)
线程不安全的
略
略
略