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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yedong313 初级黑马   /  2015-7-2 01:12  /  407 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String、StringUtils、StringBuffe和StringBuilder都有些什么方法?他们之间有什么区别?在什么样的情况下使用?

4 个回复

倒序浏览
这个你看一下它们的定义:
String、StringBuffer、StringBuilder可以储存和操作字符串,即包含多个字符的字符数据。String类表示内容不可改变的字符串。而StringBuffer、StringBuilder类表示内容可以被修改的字符串。
String覆盖了equals和hashCode方法,StringBuffer没有覆盖equals方法和hashCode方法
如果你知道字符数据要改变就使用StringBuffer。
举个例子:将1到99的数字拼接起来,形成一个字符串
StringBuffer sbf = new StringBuffer();  
for(int i=1;i<=99;i++)
{
        sbf.append(i);
}
上面的代码执行效率很高,只创建了一个StringBuffer对象,而用String实现相同的功能效率很低
String str = new String();  
for(int i=1;i<=99;i++)
{
        str = str + i;
}
因为String类是不可改变的字符串,所以创建了99个String对象

StringBuffer和StringBuilder类都表示内容可以被修改的字符串。
区别在于StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么使用StringBuffer。
回复 使用道具 举报
复习了~~~
回复 使用道具 举报

String:长度是固定的。
StringBuffer:长度不是固定的。可以用append来添加元素。但是线程是安全的。
StringBuilder:长度同样不是固定的,跟StringBuffer一样,唯一不同就是线程不是安全的,说的在直白点就是运行速度比较快。

点评

哦哦,谢谢~~~请问你能帮我看一下有关枚举的问题吗?http://bbs.itheima.com/thread-209051-1-1.html我的帖子都快沉入海底了,也没人解答。  发表于 2015-7-2 12:41
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马