上结论,在java中String用的挺多的。有的时候,面试会问
String,StringBuffer,StringBuilder有什么区别
- String一旦赋值,那么这个值就定了,就是一个常量。
- StringBuffer和StringBuilder都是可变长的字符串。可以对这两的对象的值进行增删改。
- StringBuffer是线程安全的但是性能较低,看来StringBuffer是加了同步关键字了,StringBuilder是性能强但是线程不安全,推荐使用StringBuilder.
看下百度里的图片,这样就印象深刻一些。
下面绿色的finally打错了,应该是final.
如果直接赋值给String,看来字符串对象保存的地址是一样的,就是在常量池里创建的对象。
StringBuffer,StringBuilder的用法相同
StringBuilder builder = new StringBuilder();
Object obj = new Object();
//StringBuilder对象.append(***) 这个就是可以添加到字符串的末尾,可以添加很多类型的东西,基本类型,引用类型,对象都可以添加
builder.append(13456);
builder.append("abc");
builder.append(obj); //添加对象,保存的是地址
System.out.println(builder);
builder.delete(1, 5); //删除开始下标到到结束下标,不包括结束下标
System.out.println(builder);
builder.deleteCharAt(5); //删除某个下标的字符,如果下标越界,就会报错
System.out.println(builder);
builder = builder.replace(0, 1, "123"); //替代,开始下标到结束下标,添加的字符串甚至可以下标越界
System.out.println(builder);
builder.insert(1, '8'); //插入,前面一个参数是下标,后面一个元素是字符。
System.out.println(builder);