昨天参加了一场机试,发现自己居然对String类的api不熟了,所以今天来总结一下(基于JDK1.8)。
1、父类和实现的接口
没有父类,或者说父类是Object
接口:Serializable、Comparable<String>、CharSequence
2、数据结构
底层是一个字符数组,并且底层数组不能被其他类访问,从源码可以看出
private final char value[];并且String实例不可被更改,意思就是说上面这个字符数组的长度和存储的字符都不能变,因为String类中除了构造方法没有其他方法去改变这个字符数组value。
3、构造方法
构造方法入参主要有字符串、字符数组、字节数组、int数组、数组起始下标和数量、StringBuffer、字符集
4、常用方法
| 方法 | 说明 | 
|---|---|
| length | 返回字符数组的长度 | 
| isEmpty | 字符数组长度是否为0 | 
| charAt | 返回指定索引位置的字符 | 
| codePointAt | 返回指定索引位置的Unicode代码 | 
| getChars | 将字符串的内容放到指定的字符数组中 | 
| getBytes | 返回一个字节数组 | 
| equals | 内容是否相同 | 
| equalsIgnoreCase | 忽略大小写之后内容是否相同 | 
| contentEquals | 内容是否相同 | 
| compareTo | 字符串大小比较 | 
| compareToIgnoreCase | 忽略大小写之后字符串大小比较 | 
| startsWith | 检查是否以指定的前缀开始(如果有第二参数表示开始查找的位置) | 
| endsWith | 检查是否以指定的后缀结束 | 
| indexOf | 返回指定字符(或者字符串)在当前字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1 | 
| lastIndexOf | 同indexOf的区别是从后往前找 | 
| substring | 截取子串 | 
| replace | 注意replace、replaceAll、replaceFirst的区别 | 
| split | 将字符串用指定字符串分割成一个字符串数组 | 
| toLowerCase | 转换成小写 | 
| toUpperCase | 转换成大写 | 
| trim | 去除首尾Unicode值小于32的字符 | 
| toCharArray | 返回字符数组 | 
| valueOf | 将其他类型数据转换成一个字符串 |