java基础(二)------ String,StringBuffer,StringBuilder有什么区别?
2016-10-29 15:34
966 查看
String,StringBuffer,StringBuilder有什么区别?
1.String
String是字符串常量,String对象一旦生成就不可改变,重新赋值指向了新的字符串对象,抛弃了原来的字符串对象,线程是安全的。
2.StringBuffer
StringBuffer是字符串变量,对象内容可以修改,与String相比,不产生新的对象,在内存使用时优于String,操作效率高,支持并发操作,适合在多线程中使用。与String相比,线程是不安全的。
3.StringBuilder
StringBuilder与StringBuffer原理与操作基本相同,但不支持并发操作,线程是不安全的。但在单线程操作中效率比StringBuffer高。
代码测试:
1.String
String是字符串常量,String对象一旦生成就不可改变,重新赋值指向了新的字符串对象,抛弃了原来的字符串对象,线程是安全的。
2.StringBuffer
StringBuffer是字符串变量,对象内容可以修改,与String相比,不产生新的对象,在内存使用时优于String,操作效率高,支持并发操作,适合在多线程中使用。与String相比,线程是不安全的。
3.StringBuilder
StringBuilder与StringBuffer原理与操作基本相同,但不支持并发操作,线程是不安全的。但在单线程操作中效率比StringBuffer高。
代码测试:
package test; /** * String ,StringBuffer,StringBuilder对比测试 * @author LiamYan * @author 颜景昌 * 2016-11-8 * 上午8:42:08 */ public class Test { public static String yanjingchang = "Liam"; /** * String测试 */ public static void StringTest(){ long begin = System.currentTimeMillis(); String str= new String(yanjingchang); for (int i = 0; i < 100000; i++) { str = str + "Yan"; } long end = System.currentTimeMillis(); long time = end - begin; System.out.println("使用String赋值测试时间为"+time+"毫秒"); } /** * StringBuffer测试 */ public static void StringBufferTest(){ long begin = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(yanjingchang); for (int i = 0; i < 100000; i++) { sb = sb.append("Yan"); } long end = System.currentTimeMillis(); long time = end - begin; System.out.println("使用StringBuffer赋值测试时间为:" + time + "毫秒"); } /** * StringBuilder测试 */ public static void StringBuilderTest(){ long begin = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(yanjingchang); for (int i = 0; i < 100000; i++) { sb = sb.append("Yan"); } long end = System.currentTimeMillis(); long time = end - begin; System.out.println("使用StringBuilder赋值测试时间为:" + time + "毫秒"); } public static void main(String[] args) { StringTest(); StringBufferTest(); StringBuilderTest(); } }
相关文章推荐
- JAVA基础:String, StringBuffer, StringBuilder ——区别,用法及常见问题
- Java基础——java中String、StringBuffer、StringBuilder的区别
- java基础 String 、StringBuffer、StringBuilder的区别
- Java基础之String、StringBuffer、StringBuilder的区别
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- java基础(七)String、StringBuffer与StringBuilder的区别
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- JAVA基础——String,StringBuilder,StringBuffer的区别。
- Java基础12:String、StringBuffer和StringBuilder的区别
- String、StringBuffer与StringBuilder的区别--Java基础060
- 【Java基础之String、StringBuilder、StringBuffer】Java中的String、StringBuilder以及StringBuffer的区别
- JAVA——(1)基础补充之运算符、字符串、数组、内存分配(String,StringBuffer,StringBuilder的区别
- java基础知识回顾之---java StringBuffer,Stringbuilder与String的区别
- 【Java基础】String、StringBuffer与StringBuilder之间区别
- 【Java基础】String,StringBuffer,StringBuilder之间的区别
- java基础面试题1-----String,StringBuffer,StringBuilder的区别
- java基础知识回顾---String、StringBuffer与StringBuilder之间区别
- Java基础之String、StringBuffer与StringBuilder的区别及应用场景
- Java(5):基础:String、StringBuffer和StringBuilder的区别
- Java基础——浅谈String、StringBuffer和StringBuilder的区别