java之String,StringBuffer,StringBuilder,
字符串是一系列连续的字符序列,java提供了String, 和StringBuffer两个类来封装字符串。并提供一系列方法来操作字符串对象。
String类是不可变类,即一旦一个String对象被创建以后,包含这个中的字符序列是不可变的,直至这个对象被销毁。
StringBuffer对象则代表一个字符序列可变的字符串,当一个、StringBuffer被创建后,可以通过其提供的方法改变对象的字符序列,一旦通过StringBuffer生成想要的字符串可以通过toString ()方法将其装换为一个String。StringBuffer在处理字符串时不生成新的对象,因此其优于String。 (StringBuffer是线程安全的)
StringBulider: 其与StringBuffer基本相似,不同的是StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高(因为在维护同步数据的正确性上肯定是要消耗资源的){StringBuffer 尽管在拼接字符串时效率高于StringBuffer 但是最后还是好转成String类型, 而在大字符串拼接的情况下StringBuffer的toString ()要比StringBuilder 的toString ()执行速度,所以线程安全的情况下还是用StringBuffer 。}StringBuilder通常用在用在单线程中,
String类是不可改变的,String的实例一旦生成就不会在改变
String str1 = “java ”;
str2 = str1 + “struts”;
str3 = str1+ spring ;
上面程序除了使用三个字符串直接量外,还会额外生成2个字符串直接量,-----“java”和“Struts”连接生成的“JavaStruts”接着Javastruts 与spring连接生成“javaStrutsSpring”程序中的str依次指向不同的字符串对象,因为String是不可改变的所以会额外产生许多变量,这会诊增减系统的开销
StringBuffer与StringBulider以就可以避免这个问题。