昨天参加了一场机试,发现自己居然对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 | 将其他类型数据转换成一个字符串 |