String 和StringBuffer的区别 我所知道的更多的展现在字符串拼接方面,如下例子
如果数据数量足够大,他们的区别是非常明显的。
下面是String字符串变量
String a=“pine”; //定义了a变量
String b=“apple”; // 定义了b变量
String c=“pine”+“apple”; // 一种将 a和b拼接的方法
String d=a+b; // 第二种拼接方法
下面是StringBuffer字符串变量
StringBuffer sb= new StringBuilder(“pine”).append(“ apple”);
//这是一个拼接语句,在pine后拼接apple 而insert(位置,内容)方法可以指定拼接的位置
下面就上述例子来说一说String 和StringBuffer的区别
首先
String是不可变的对象,每次使用时都会new一个新的String对象。
而StringBuffer是一个可变的安全的字符序列,他有一个缓冲区,可以通过调用方法来修改该缓冲区的内容和长度。
在速度方面
变量c 也就是例子的第一种拼接方法 在JVM机制中就相当于没有拼接,即
String c= “pine apple”
而变量d也就是第二种拼接方法则是String的一种拼接方法。
String d=a+b; // 第二种拼接方法
此时的d就是"pine apple",此时的数据量很大的话,速度上会比StringBuffer的拼接慢上很多了。
关于StringBuilder
此类提供一个与 StringBuffer 兼容的 API,该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。
网友评论