首页 > 代码库 > Java杂谈之StringBuffer----兼带String,StringBuffer,StringBuilder的区别

Java杂谈之StringBuffer----兼带String,StringBuffer,StringBuilder的区别

在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);
		
	}

}