StringBuilder类
String类是一个不可变类。
在对字符串进行拼接操作时,每次拼接都会构建新的String对象,耗时并且浪费时间。可以采用StringBuiler进行代替。
StringBuilder —— 可变的字符序列,可变的字符串类。可以看做是一个容器,这里的可变是指StringBuilder对象中的内容是可变的。
线程不安全,单线程操作字符串。
String和StringBuilder的区别:
String:内容是不可变的。
StringBuilder:内容是可变的。
StringBuilder 和StringBuffer 的区别:
StringBuffer :可变类。线程安全。
StringBuilder:可变类。非线程安全(不能同步访问)。
两者都可以进行多次修改,并且不产生新的使用对象。StringBuilder类相较于StringBuffer有速度优势。但在要求线程安全的情况下,必须使用StringBuffer。
小结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
StringBuilder的构造方法:
( StringBuilder在java.lang 包下,可以不用导包。)
(快捷键:创建对象时自动补全对象: ctrl+alt+v (idea))
- public StringBuilder() —— 创建一个空白可变字符串对象,不含有任何内容。
StringBuilder sB = new StringBuilder();
(虽然创建空白的可变字符串对象,但是可以通过sB.length() 对长度进行计算,计算的长度为0。)
- public StringBuilder(String str) —— 根据字符串的内容,创建可变字符串对象。
StringBuilder sB1 = new StringBuilder("str");
StringBuilder的添加和反转方法:
- public StringBuilder append(任意类型) —— 在字符串末尾添加数据,并返回对象本身StringBuilder对象本身。
StringBuilder sB1 = new StringBuilder();
sB1.append(4);
sB1.append("123",1,2); //从下标1开始,下标2结束,插入一个,不包括下标2
System.out.println(sB1);
- public StringBuilder reverse() —— 返回逆序字符序列。
sB1.reverse();
System.out.println(sB1);
String和StringBuilder的相互转换
- StringBuilder 转 String : public String toString();
StringBuilder sB2 = new StringBuilder("str");
System.out.println(sB2);
String str1 = sB2.toString(); //StringBuilder转string
System.out.println(sB2.getClass()); //判断变量类型
System.out.println(str1.getClass()); //判断变量类型
- String 转 StringBuilder : public StringBuilder (String s) —— 通过StringBuilder的构造方法实现。
//String 转 StringBuilder
String s = "hello world";
StringBuilder sB3 = new StringBuilder(s);
System.out.println(s);
System.out.println(sB3);
System.out.println(s.getClass()); //判断变量类型
System.out.println(sB3.getClass()); //判断变量类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69101.html