StringBuilder和String相互转换(StringBuffer同理)
1. StringBuilder 转换为 String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
2. String 转换为 StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
public class Demo7 {
public static void main(String[] args) {
//StringBuilder 转换为 String
StringBuilder sbd = new StringBuilder("tom");
String string = sbd.toString();
System.out.println(string);
//String 转换为 StringBuilder
StringBuilder sbd2 = new StringBuilder(string);
System.out.println(sbd2);
}
}
三者的异同
🔷String ,StringBuffer,StringBuilde三者的区别?
🔷String:不可变的字符序列;底层使用char[]存储
🔷StringBuffer:可变的字符序列;线程安全的,效率低; JDK1.0 底层使用char[]存储
🔷StringBuilder:可变的字符序列;jdk1.5新增的,线程不安全的,效率高;底层使用char[]存储
🔷使用场景:
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
代码实例
三者效率对比:
public class Demo8 {
public static void main(String[] args) {
//初始设置
long startTime = 0L; //开始时间
long endTime = 0L; //结束时间
String text = ""; //空字符串
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
//开始对比
startTime = System.currentTimeMillis(); //开始时间 毫秒数
for (int i = 0; i < 20000; i++) {
buffer.append(String.valueOf(i));
}
endTime = System.currentTimeMillis(); //结束时间
System.out.println("StringBuffer的执行时间:"+(endTime - startTime));
System.out.println("***************************");
startTime = System.currentTimeMillis(); //开始时间
for (int i = 0; i < 20000; i++) {
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis(); //结束时间
System.out.println("StringBuilder的执行时间:"+(endTime - startTime));
System.out.println("***************************");
startTime = System.currentTimeMillis(); //开始时间
for (int i = 0; i < 20000; i++) {
text = text + i;
}
endTime = System.currentTimeMillis(); //结束时间
System.out.println("String的执行时间:"+(endTime - startTime));
}
}