很多刚开始学习编程的朋友,或者只从事前端开发的朋友,很不理解,java中已经有String类创建字符串了,为什么还有个StringBuilder和StringBuffer呢?
因为String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
首先看一下创建字符串的两种方式及其存储:
String s1 = "Runoob"; // String 直接创建
String s2 = "Runoob"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 对象创建
String s5 = new String("Runoob"); // String 对象创建
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
类似如下用法:
public class RunoobTest{
public static void main(String args[]){
StringBuilder sb = new StringBuilder(15);
sb.append("hello");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(5, "everyOne");
System.out.println(sb);
}
}
StringBuilder和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的,但是它有速度优势。
以下对String类不可改变再做一下描述:
String s = "hello";
System.out.println("s = " + s);
s = "world";
System.out.println("s = " + s);
输出结果:
hello
world
可能有人会说,这不是没报错,也改变了s的值吗?实际上,这只是改变了值的引用。如下图所示:
今天的分享就到这里,感谢大家,我是猿-阿焱!