StringBuilder、StringBuffer
2023-12-28 19:19:30
StringBuilder
- StringBuilder代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
- 好处:StringBuilder比String更适合做字符串的修该操作,效率会更高,代码也会更简洁。
构造器 | 说明 |
---|---|
public StringBuilder ( ) | 创建一个空白的可变的字符串对象,不包含任何内容 |
public StringBuilder ( String str ) | 创建一个指定字符串内容的可变字符串对象 |
构造器 | 说明 |
---|---|
public StringBuilder append ( 任意类型 ) | 添加数据并返回StringBuilder对象本身 |
public StringBuilder reverse ( ) | 将对象的内容反转 |
public int length ( ) | 返回对象内容的长度 |
public String toString ( ) | 通过toString()就可以实现把StringBuilder转换为String |
public class Test {
public static void main(String[] args) {
// 目标:搞清StringBuilder的用法和作用
StringBuilder s = new StringBuilder("abcd");
// 拼接内容
s.append(11);
s.append("qwer");
s.append(true);
// 支持链式编程
s.append(666).append("wwwww").append("123");
System.out.println(s);
// 反转操作
s.reverse();
System.out.println(s);
// 返回字符串长度
System.out.println(s.length());
// 把StringBuilder对象又转换成String类型
String rs = s.toString();
System.out.println(rs);
}
}
为什么操作字符串建议使用StringBuilder,而不用String
public class Test {
public static void main(String[] args) {
// 目标:搞清StringBuilder的好处
// 需求:需要拼接100万次的abc
// 先用String测试
String rs = "";
for (int i = 1; i <= 1000000; i++) {
rs = rs + "abc";
}
System.out.println(rs);
}
}
public class Test {
public static void main(String[] args) {
// 目标:搞清StringBuilder的好处
// 需求:需要拼接100万次的abc
// 使用StringBuilder
StringBuilder s = new StringBuilder();
for (int i = 1; i <= 1000000; i++) {
s.append("abc");
}
System.out.println(s);
}
}
????????如果使用String来完成这个任务的话,要等到结果需要较长的时间,因为String类型的每次添加abc的时候都会创建一个新的对象导致效率非常的慢。使用StringBuilder时就可以避免这个问题,差不多1~2秒的时间就可以得出结果。
- 对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。
- 注意:如果存在字符较少,或者不需要存在,以及定义字符串变量,还是建议使用String。
StringBuffer
StringBuilder与StringBuffer
注意:
- StringBuilder的用法与StringBuffer是一模一样的
- 但StringBuilder是线程不安全的,StringBuffer是线程安全的
案例:返回任意整形数组的内容
public class Test {
public static void main(String[] args) {
// 目标:完成数组遍历,并拼接成指定格式
int[] arr = new int[]{11,22,33};
System.out.println(getArrayData(arr));
}
public static String getArrayData(int[] arr){
// 判断数组是否为null
if (arr == null){
return null;
}
StringBuilder s = new StringBuilder();
s.append("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length-1){
s.append(arr[i]).append(", ");
}else {
s.append(arr[i]);
}
}
s.append("]");
String rs = s.toString();
return rs;
}
}
?
StringJoiner
- JDK8开始才有的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的。
- 好处:不仅提高字符串的操作效率,并且在有些场景下使用它操字符串,代码会更加简洁。
import java.util.StringJoiner;
public class Test {
public static void main(String[] args) {
// 目标:掌握StringJoiner的使用
//StringJoiner s = new StringJoiner(", "); // 间隔符 输出:java1, java2, java3
//间隔符 开始符 结束符
StringJoiner s = new StringJoiner(", ","[","]"); //输出:[java1, java2, java3]
s.add("java1");
s.add("java2");
s.add("java3");
System.out.println(s);
}
}
文章来源:https://blog.csdn.net/SU_mu147/article/details/135246765
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!