String StringBuilder StringBuffer区别
2013-05-25 19:33
579 查看
本文参考了http://wenku.baidu.com/view/8de1a06b011ca300a6c390d2.html
1.String类的对象
a.一旦创建就不能改变。
b.如果把一个引用的对象赋一个新值,只是将新的引用指向了一个新的对象,旧的对象依然没有变。(也就是每次赋一个新值都创建了新的对象)
2.StringBuffer, StringBuilder:
a.对象的内容是可以修改的,每次操作都会对对象本身进行操作,而不是生成新的对象。
3.下面是一个类的测试
结果
test1:1685
test2:12
4.对于某些情况,直接相加快于StringBuffer
test3: 0~1
test4: 80~90
5.StringBuffer 与StringBuilder
StringBuffer是线程安全的。
StringBuilder是非线程安全的,如果不会有线程的逃逸,使用StringBuilder更好。
1.String类的对象
a.一旦创建就不能改变。
b.如果把一个引用的对象赋一个新值,只是将新的引用指向了一个新的对象,旧的对象依然没有变。(也就是每次赋一个新值都创建了新的对象)
2.StringBuffer, StringBuilder:
a.对象的内容是可以修改的,每次操作都会对对象本身进行操作,而不是生成新的对象。
3.下面是一个类的测试
package com.jue.test; public class MainTest { public static void main(String[] args) { test1();// 1685 test2();// 12 } private static void test1() { long startTime = System.currentTimeMillis(); String s = "abc"; for (int i = 0; i < 10000; i++) { s += "123"; } long currentTime = System.currentTimeMillis(); System.out.println(currentTime - startTime); } private static void test2() { long startTime = System.currentTimeMillis(); StringBuffer s = new StringBuffer("abc"); for (int i = 0; i < 10000; i++) { s.append("123"); } long currentTime = System.currentTimeMillis(); System.out.println(currentTime - startTime); } }
结果
test1:1685
test2:12
4.对于某些情况,直接相加快于StringBuffer
private static void test3() { long startTime = System.currentTimeMillis(); StringBuilder s = new StringBuilder("abc"); for (int i = 0; i < 10000000; i++) { s.append("123"); } long currentTime = System.currentTimeMillis(); System.out.println(currentTime - startTime); } private static void test4() { long startTime = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { String s1 = "123" + "456" + "789" + "abc" + "def"; } long currentTime = System.currentTimeMillis(); System.out.println(currentTime - startTime); }结果:
test3: 0~1
test4: 80~90
5.StringBuffer 与StringBuilder
StringBuffer是线程安全的。
StringBuilder是非线程安全的,如果不会有线程的逃逸,使用StringBuilder更好。
相关文章推荐
- String StringBuffer StringBuilder之间的区别
- String StringBUffer StringBuilder的区别
- String StringBuffer StringBuilder之间的区别
- Java中String/StringBuffer/StringBuilder区别
- String StringBuffer StringBuilder区别
- String\StringBuffer\StringBuilder的区别
- string stringbuffer stringbuilder区别
- String StringBuffer StringBuilder区别
- String StringBuilder StringBuffer的区别
- String Stringbuffer Stringbuilder区别
- String StringBuffer StringBuilder 三者的区别
- String StringBuffer StringBuilder 区别
- String StringBuilder StringBuffer的区别
- String StringBuffer StringBuilder的区别
- 黑马程序员——String StringBuffer StringBuilder的区别
- String / StringBuffer / StringBuilder 的区别与使用场景
- String StringBuffer StringBuilder 三者的区别
- java语言:String StringBuffer StringBuilder区别
- Java String,StringBuilder和StringBuffer的区别 StringBuilder > StringBuffer> String
- 转:String StringBuffer StringBuilder区别