Java面试准备二:String、StringBuilder、StringBuffer
来源:互联网 发布:数据治理整体解决方案 编辑:程序博客网 时间:2024/06/07 06:58
该系列的Java面试复习内容全参考自近一个月的面试总结,在此谢谢博主的分享。
下面主要是我根据博主列出的Java基础部分需要了解的内容进行复习所做的笔记。这里只是为了记录,由于自身水平实在不怎么样,难免错误百出,有错的地方还望大家多多指出,谢谢。
1. String、StringBuffer、StringBuilder区别
参考StringBuffer、StringBuilder区别
String、StringBuffer、StringBuilder,都能用来表示字符串。
String类是不可变类,任何对String的改变都能引发新的String的对象的生成。
StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象。StringBuffer是线程安全的。
StringBuilder是线程不安全的。
eg:
public class StringTest { public static String BASEINFO = "Mr.Y"; public static final int COUNT = 2000000; /** * 执行一项String赋值测试 */ public static void doStringTest() { String str = new String(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT / 100; i++) { str = str + "miss"; } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used String."); } /** * 执行一项StringBuffer赋值测试 */ public static void doStringBufferTest() { StringBuffer sb = new StringBuffer(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { sb = sb.append("miss"); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used StringBuffer."); } /** * 执行一项StringBuilder赋值测试 */ public static void doStringBuilderTest() { StringBuilder sb = new StringBuilder(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { sb = sb.append("miss"); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used StringBuilder."); } /** * 测试StringBuffer遍历赋值结果 * * @param mlist */ public static void doStringBufferListTest(List<String> mlist) { StringBuffer sb = new StringBuffer(); long starttime = System.currentTimeMillis(); for (String string : mlist) { sb.append(string); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + "buffer cost:" + (endtime - starttime) + " millis"); } /** * 测试StringBuilder迭代赋值结果 * * @param mlist */ public static void doStringBuilderListTest(List<String> mlist) { StringBuilder sb = new StringBuilder(); long starttime = System.currentTimeMillis(); for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext();) { sb.append(iterator.next()); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + "builder cost:" + (endtime - starttime) + " millis"); } public static void main(String[] args) { doStringTest(); doStringBufferTest(); doStringBuilderTest(); List<String> list = new ArrayList<String>(); list.add(" I "); list.add(" like "); list.add(" BeiJing "); list.add(" tian "); list.add(" an "); list.add(" men "); list.add(" . "); doStringBufferListTest(list); doStringBuilderListTest(list); } }
测试结果:
2711 millis has costed when used String.
211 millis has costed when used StringBuffer.
141 millis has costed when used StringBuilder.
I like BeiJing tian an men . buffer cost:1 millis
I like BeiJing tian an men . builder cost:0 millis
结论:从上面结果可以看出,不考虑多线程,采用String对象时,执行时间都比其他两个都要长,而采用StringBuffer和StringBuilder差别也比较明显。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑线程同步问题,我们应该优先使用StringBuilder类,如果要保证线程安全,自然是StringBuffer。
- Java面试准备二:String、StringBuilder、StringBuffer
- String StringBuffer StringBuilder区别(Java面试)
- Java面试String,StringBuffer,StringBuilder的区别
- Java String,StringBuilder,StringBuffer
- JAVA String StringBuffer Stringbuilder
- Java String\StringBuffer\Stringbuilder
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- 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 String、StringBuffer、StringBuilder
- JDBC简介
- KMP算法
- 等价二叉树
- BZOJ 1552 [Cerc2007]robotic sort
- 配置电脑网络IP
- Java面试准备二:String、StringBuilder、StringBuffer
- 【笔试】Java中的重载与重写
- Dokcer创建私有仓库、私有仓库Web管理
- 陈独秀先生介绍
- c++ 中 毫秒级时间获取
- 4月11日,MyThread,每日20行。
- 人脸识别—特征脸方法
- 自己动手实现数据库连接池
- 关于String index out of range: -1报错问题