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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。