一. 字符串的常用方法
public char charAt(int index) 根据索引返回字符
public int length() 返回字符串的长度
注意:获得字符串的长度和获得数组的长度不同,数组的长度是数组的属性
数组名.length() 属性
字符串.length() 方法
二. StringBuilder
1.一个字符串容器,里面的内容是可以被改变的
构造方法:StringBuilder()-空参构造
StringBuilder(String)-有参构造,后续添加字符串都将接在String后面
2.几个常用的方法
public StringBuilder append() 添加数据,并返回对象本身
public StringBuilder reverse() 反转容器内容
public int length() 返回容器内字符出现的个数
public String toString() 通过该方法可以将StringBuilder转化为String
三. 实操
1. 创建一个StringBuilder
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder("abc");
2. 给已有对象添加内容
sb.append("ab");
sb.append(6);
3. 反转内容(该方法也论证了StringBuilder的内容是可以进行更改的,不同于String)
sb.reverse();
4. 获取长度
int len = sb.length();
5.转化为字符串
String s = sb.toString();
四. 练习
由键盘录入一个字符串,判断该字符串是否为对称字符串
五. 衍生-StringJoiner
可以通过入参来指定格式的容器
// 创建一个容器,只指定间隔符
StringJoiner sj = new StringJoiner("---");
// 创建一个容器,指定间隔符,开始和结束符号
StringJoiner sj2 = new StringJoiner("---", "[","]");
// 向容器内添加数据,StringJoiner是用单词add命名方法做区分
sj2.add("sb");
// 查看容器内字符的个数
int len = sj2.lengh();
// 转化为String
sj2.toString();
总结:由此可见,StringJoiner更适合标准化拼接,StringBuilder的灵活性更强,根据场景可以自行选择
六. String拼接的底层原理和拼接优化
如:String s1 = "a";
String s2 = "b";
String s3 = "c";
想要将三个字符串拼接起来,如果使用"+"进行拼接的话
String result = s1 + s2 + s3;
在底层,会先创建一个StringBuilder,将s1和s2加载进去完成拼接,再调用toString方法,创建一个String对象;再创建一个新的StringBuilder,将拼接好的String对象和s3加载进去完成拼接,再调用toString方法,最后创建一个String对象,为最终结果.
但是,由上可知,整个过程创建了两个StringBuilder和两个String对象,浪费空间而且花费时间.
所以在有标识符参与拼接的情况下,推荐直接使用StringBuilder来完成拼接,而不是用"+".
扩展:StringBuilder的容量是不会被冲爆的,默认容量是16,如果超了,会扩展为*2+2,如果再超了,会扩展为实际的容量,变得弹性化.