String,StringBuffer, StringBuilder 的区别 String为什么是不可变的

1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。

2、String不可变是因为在JDK中String类被声明为一个final类。

3、StringBuffer是线程安全的,而StringBuilder是非线程安全的。

ps:线程安全会带来额外的系统开销,所以StringBuilder的效率比StringBuffer高。如果对系统中的线程是否安全很掌握,可用StringBuffer,在线程					不安全处加上关键字Synchronize。
我目前编写程序是:字符变量长度不常变化就用String 长度需要变化但线程不安全没要求就用StringBuilder(毕竟线程没需求效率还是需要的嘛)。

另外String下面使用char类型的数组存储的。(不懂得可以看看下图)(以下图片来自图中链接处,如有侵犯,评论留言联系。)

在这里插入图片描述

发布了16 篇原创文章 · 获赞 9 · 访问量 4893

猜你喜欢

转载自blog.csdn.net/Ambitiouss/article/details/100053889