黑马程序员技术交流社区

标题: java中有关字符串操作的类 [打印本页]

作者: yedong313    时间: 2015-7-2 01:12
标题: java中有关字符串操作的类
String、StringUtils、StringBuffe和StringBuilder都有些什么方法?他们之间有什么区别?在什么样的情况下使用?
作者: 王文辉    时间: 2015-7-2 10:12
这个你看一下它们的定义:
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。
作者: Huan220_欢    时间: 2015-7-2 10:18
复习了~~~
作者: 耀阳圣尊    时间: 2015-7-2 10:43
Huan220_欢 发表于 2015-7-2 10:18
复习了~~~

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2