A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String,  StringBuffer  StringBuilder的区别。
String的长度是不可变的;
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;
StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

3 个回复

倒序浏览
我还以为是问题,原来是总结,总结的不错
回复 使用道具 举报
一袭蓝10 来自手机 中级黑马 2015-4-18 12:11:53
藤椅
吾等学渣表示能不能举个例子呀
回复 使用道具 举报
String是Final修饰的 , 所以String类型的变量不可以更改,经常有人会问
String s="abc";创建了几个对象?
在JVM中存在一个字符串池,保存着很多String对象,并且可以被共享使用,因此提高了效率,String a="abc";这行代码被执行的时候,JVM首先去这个字符串池去寻找看看有没有”abc“这一个对象,判断依据是equals(Object obj)这一方法,如果有,则栈内存中的a直接指向该对象,不创建新对象,如果没有则先创建这个对象,然后把他加入到字符串池中,再得到他的地址

所以这个问题的答案是1个对象或2个,栈内存中的a也是个对象

至于StringBuffer/StringBuilder一个是线程安全 一个是线程不安全的, 很显然线程不安全的效率高点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马