为了账号安全,请及时绑定邮箱和手机立即绑定

String,stringBuffer,StringBuilder区别和详细例子

标签:
Java

0,String定义初始化为null,会有什么影响?
1,为什么有了String类型,还需要StringBuffer和StringBuilder?
2,String和StringBuffer和StringBuilder区别?

问题0)为什么有了String类型,还需要StringBuffer和StringBuilder?,
因为String类型是不可变类型,字符串操作(拼接)造成会创建很多中间的对象。

问题1)string初始赋值为null,会有什么影响?

例子1:
public class StringNUll {
public static void main(String[] args) {
String str001 = null;
System.out.println(“str001===:”+str001);
    String str002 = "null";
    str002 = str002 + "321";
    System.out.println("str002===:"+str002);
}
}

str001===:null
str002===:null321
反编译:String拼接会优化为StringBuilder
53: new #3 // class java/lang/StringBuilder
56: dup
57: invokespecial #4 // Method java/lang/StringBuilder.""?)V
60: ldc #11 // String str002===:
62: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
65: aload_2
66: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
69: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;

问题2)Java的字符串,String、StringBufer、StringBuilder有什么区别?
String是Java语言非常基础和重要的类,它是immutable类,它被声明为final class,所有属性也是final的。Immutable类表现出来的性质就是不可以通过它的实例修改属性值。所以字符串的拼接,裁剪等动作,都会产生新的String对象。

StringBuffer是为了解决String拼接产生太多的中间对象而提出的一个类,我们可以用append和add方法,把字符串添加到已有的序列的末尾或指定位置,StringBuffer是一个线程安全的类,它保证了线程安全,随之而来的是额外的开销,所以除非有线程安全的需要,不然推荐使用stringbuilder效率更高。

Stringbuilder的功能和Stringbuffer是一样的,它去掉了synchronize关键字修饰,减小了开销。绝大部分情况下进行字符串操作的首选。
————————————————

原文链接:https://blog.csdn.net/newVenues/article/details/101703262
作者:一起写程序 jkCode

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消