您好,欢迎来到99网。
搜索
您的当前位置:首页Java之String、StringBuffer、StringBulider辨识

Java之String、StringBuffer、StringBulider辨识

来源:99网

1、总引:

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

从这段话中,可以读出两点:

1)在修改自身对象时,String是不可变的,StringBuffer和StringBuilder是可变的;

2)同是可变下,StringBuffer是线程安全的(适用多线程),而StringBuilder则有速度优势(适用单线程)。

2、String和StringBuffer可变和不可变

public static void main(String args[]){
	       String str = "hello";
	       StringBuffer strBuffer = new StringBuffer();
	       strBuffer.append(" world");
	       System.out.println(str.getClass() + "@" + str.hashCode());
	       System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());


	       str = "jason";
	       strBuffer.append(" and jason");
	       System.out.println(str.getClass() + "@" + str.hashCode());
	       System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());	
	}

结果:String的地址已改变,对象已经改变为另一个;StringBuffer地址不变,还是同样的对象。

class java.lang.String@99162322
class java.lang.StringBuffer@131204848
class java.lang.String@1007019
class java.lang.StringBuffer@131204848

3、适用场景

1)如果要操作少量的数据用 String; 
2)多线程操作字符串缓冲区下操作大量数据 StringBuffer; 
3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务