Java中String,StringBuffer,StringBuilder
先介绍一些Buffer

Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer 和 ShortBuffer,是没有 BooleanBuffer 之说的。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的。

StringBuffer的构造方法:


StringBuffer常用方法:

length(),append(),toString(),charAt(int),insert()


常用方实列代码:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer sb = new StringBuffer();
		System.out.println("初始长度:"+sb.length());
		System.out.println("初始容量:"+sb.capacity());
		//追加字符串
		sb.append("java");
		System.out.println("追加后:"+sb);
		//插入
		sb.insert(0,"hello");
		System.out.println("插入后:"+sb);
		//替换
		sb.replace(5, 6, ",");
		System.out.println("替换后:"+sb);
		//删除
		sb.delete(5,6);
		System.out.println("删除后:"+sb);
		//反转
		sb.reverse();
		System.out.println("反转后:"+sb);
		System.out.println("当前字符串长度:"+sb.length());
		System.out.println("当前容量:"+sb.capacity());
		//改变StringBuffer的长度,将只保留前面部分
		sb.setLength(5);
		System.out.println("改变长度后:"+sb);
		
	}


StringBuffer与String对比:

相同点:

   1、都用来处理字符串

    2、提供了如CarAt()等方法

    3、索引位置都从0开始

    4、subString时都从beglndex开始

不同点:

    1、String不可变类,定长

    2、StringBuffer使用方法都可以改变缓冲区的长度,变长

    3、String类重写了Object类的equals方法

    4、StringBuffer没有方法重写

    5、String可以用"+"连接

    6、StringBuffer不能用"+"连接   


 StringBuilder特点:

StringBulider用法上和StringBuffer差不多,下面来看一下具体用法:


常用方法:


StringBuilder和String区别:

    1、String具有不可变性(定常),而StringBuilder不具备

    建议:当频发操作字符串时,使用StringBilder

StringBuilder和StringBuffer区别:

    1、二者基本相似

    2、StringBuffer是线程安全的,StringBuilder则没有,所以性能略高

      在执行速度方面:StringBuilder > StringBuffer

StringBuilder测试代码:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();
		System.out.println("初始长度:"+sb.length());
		System.out.println("初始容量:"+sb.capacity());
		//追加字符串
		sb.append("java");
		System.out.println("追加后:"+sb);
		//插入
		sb.insert(0,"hello");
		System.out.println("插入后:"+sb);
		//替换
		sb.replace(5, 6, ",");
		System.out.println("替换后:"+sb);
		//删除
		sb.delete(5,6);
		System.out.println("删除后:"+sb);
		//反转
		sb.reverse();
		System.out.println("反转后:"+sb);
		System.out.println("当前字符串长度:"+sb.length());
		System.out.println("当前容量:"+sb.capacity());
		//改变StringBuilder的长度,将只保留前面部分
		sb.setLength(5);
		System.out.println("改变长度后:"+sb);
		
	}

  结果:



String,StringBuffer,StringBuilder运行时间对比:

	public static void main(String[] args) {

		Date date1 = new Date();
		long t1 = date1.getTime();
		StringBuffer buffer = new StringBuffer();
		for (int i = 0; i < 100000; i++) {
			buffer.append("java");
		}
		Date date2 = new Date();
		long t2 = date2.getTime();
		System.out.println("StringBuffer用时:" + (t2 - t1));

		Date date3 = new Date();
		t1 = date3.getTime();
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < 100000; i++) {
			builder.append("java");
		}
		Date date4 = new Date();
		t2 = date4.getTime();
		System.out.println("StringBuilder用时:" + (t2 - t1));

		Date datestr = new Date();
		t1 = datestr.getTime();
		String str = new String();
		for (int i = 0; i < 100000; i++) {
			str+="java";
		}
		Date datestr2 = new Date();
		t2 = datestr2.getTime();
		System.out.println("String用时:" + (t2 - t1));

	}

结果:







阅读更多
文章标签: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Java中String,StringBuffer,StringBuilder

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭