黑马程序员技术交流社区
标题:
String, StringBuffer StringBuilder的区别
[打印本页]
作者:
13031266255
时间:
2015-4-18 11:59
标题:
String, StringBuffer StringBuilder的区别
String, StringBuffer StringBuilder的区别。
String的长度是不可变的;
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;
StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
作者:
qinrh
时间:
2015-4-18 12:06
我还以为是问题,原来是总结,总结的不错
作者:
一袭蓝10
时间:
2015-4-18 12:11
吾等学渣表示能不能举个例子呀
作者:
一个好人
时间:
2015-4-18 12:47
String是Final修饰的 , 所以String类型的变量不可以更改,经常有人会问
String s="abc";创建了几个对象?
在JVM中存在一个字符串池,保存着很多String对象,并且可以被共享使用,因此提高了效率,String a="abc";这行代码被执行的时候,JVM首先去这个字符串池去寻找看看有没有”abc“这一个对象,判断依据是equals(Object obj)这一方法,如果有,则栈内存中的a直接指向该对象,不创建新对象,如果没有则先创建这个对象,然后把他加入到字符串池中,再得到他的地址
所以这个问题的答案是1个对象或2个,栈内存中的a也是个对象
至于StringBuffer/StringBuilder一个是线程安全 一个是线程不安全的, 很显然线程不安全的效率高点
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2