在Java中,用到最多的当属String类型的数据了
而这一点就要涉及String , StringBuffer , StringBuilder这三大类
下面主要来比较一下String和StringBuffer的区别,因为StringBuffer和StringBuilder
太相似,所以就不拿来比较了。
提及一下,StringBuffer和StringBuilder的区别
从安全性来说,StringBuffer更安全,StringBuffer主打线程安全
从执行效率来说,StringBuilder更效率,StringBuilder支持多线程
下面一个图来解释String和StringBuffer的区别
以下再次通过代码来诠释两者的区别:
package JavaTestString;
public class JavaStringStringBuffer {
public static void main(String[] args) {
// String s = "hello";
StringBuffer strBuf = new StringBuffer("hello");
//执行之前的时间
long start = System.currentTimeMillis();
//执行之前的内存
long before = Runtime.getRuntime().freeMemory();
// for(int i=0;i<5000;i++)
// {
// s+="hello";
// }
for(int i=0;i<5000;i++)
{
strBuf.append("world");
}
//执行之后的时间
long end = System.currentTimeMillis();
//执行之后的内存
long after = Runtime.getRuntime().freeMemory();
System.out.println("耗时"+(end-start)+"毫秒");
System.out.println("耗内存"+(before-after)/1024/1024+"M");
}
}
大家自行运行一下代码(String的那部分我注释了,可以注释StringBuffer部分再解除
String部分注释运行),看看两者在运行时间和占用的内存空间上有什么不同。
以上是String,StringBuffer以及StringBuilder的联系和区别,下面介绍StringBuffer
常用的方法:
拼接增加字符串的方法:append()和insert()方法
删除字符串或者字符串一部分的方法:delete(),deleteCharAt()
修改字符串某个位置的方法:setCharAt()方法
翻转字符串的方法:reverse()方法
以下是具体的实例代码:
package JavaTestString;
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer strBuf=new StringBuffer();
System.out.println(strBuf);
//从安全性来说,StringBuffer更安全
//从执行效率来说,StringBuilder更效率
//StringBuffer----线程安全
//StringBuilder----支持多线程
StringBuffer strBuf1 = new StringBuffer("helloworld");
StringBuilder strBui = new StringBuilder("helloworld");
System.out.println(strBuf1);
//以下StringBuffer具有的方法,StringBuilder也具有,就不一一举例了
//增加的方法--append()方法和insert()
strBuf1.append(123);
strBuf1.append("Java!");
System.out.println(strBuf1);
strBuf1.insert(5, "XJL");
System.out.println(strBuf1);
//删除
strBuf1.delete(2, 4);//包括2不包括4
System.out.println(strBuf1);
strBuf1.deleteCharAt(1);
System.out.println(strBuf1);
//修改
strBuf1.setCharAt(1, 'Y');
System.out.println(strBuf1);
//翻转
strBuf1.reverse();
System.out.println(strBuf1);
}
}