java中操作字符串常见类说明及操作字符串常见类的区别说明
Java常见操作字符串类
Java中操作字符串类有以下三个:
String
StringBuffer(线程安全)
StringBuilder(非线程安全)
String、 StringBuffer(线程安全)、 StringBuilder(非线程安全)三者区别
区别一:对象创建方式
String和StringBuffer、StringBuilder区别:
String声明的是不可变的对象,每次操作都会生成新String对象
然后将指针指向新String对象
StringBuffer、StringBuilder可在原有对象的基础上进行操作
经常改变字符串内容的情况下
笔者建议不要使用String
应该选择使用StringBuffer或StringBuilder类
例
public class TestClass {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder();
for(int i = 0; i < 10; i++) {
if(builder.length() > 0) {
builder.append(",");
}
builder.append("i=").append(i);
}
System.out.println(builder.toString());
}
}
//运行以上代码,将输出以下信息
i=0,i=1,i=2,i=3,i=4,i=5,i=6,i=7,i=8,i=9
区别二:线程安全
StringBuffer和StringBuilder最大的区别在于 StringBuffer是线程安全而StringBuilder是非线程安全 但StringBuilder性能高于StringBuffer 所以在单线程环境下笔者推荐使用StringBuilder 多线程环境下推荐使用StringBuffer例:
public class TestClass {
public static void main(String[] args) {
int n = 100000;
stringBuffer(n);
stringBuilder(n);
}
private static void stringBuilder(int n) {
long start = System.currentTimeMillis();
StringBuilder builder = new StringBuilder();
for(int i = 0; i < n; i++) {
builder.append("i=").append(i);
}
System.out.println("StringBuilder " + (System.currentTimeMillis() - start) + "ms");
}
private static void stringBuffer(int n) {
long start = System.currentTimeMillis();
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < n; i++) {
buffer.append("i=").append(i);
}
System.out.println("StringBuffer " + (System.currentTimeMillis() - start) + "ms");
}
}
//运行以上代码,将输出以下信息
StringBuffer 38ms
StringBuilder 20ms
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


