Java入门之String学习随记(二)

一. 字符串的常用方法

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();

四. 练习

由键盘录入一个字符串,判断该字符串是否为对称字符串

Java入门之String学习随记(二)_第1张图片        

 五. 衍生-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,如果再超了,会扩展为实际的容量,变得弹性化.

你可能感兴趣的:(学习,java,idea)