《Java编程思想》读书笔记 第十三章 字符串

不可变String

String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修改后的字符串内容,而最初的String对象则丝毫未动

换句话说:任何对String的改变都会引发新的对象的生成

StringBuilder和StringBuffer

StringBuilder:线程不安全的

StringBuffer:线程安全的,要维持同步锁,因此效率低

public static void testString() {long start = System.currentTimeMillis();String str = null;for (int i = 0; i < 200000; i++)str = str + i + ",";System.out.println(System.currentTimeMillis() - start);}public static void testStringBuffer() {long start = System.currentTimeMillis();StringBuffer sbf = new StringBuffer();for (int i = 0; i < 200000; i++)sbf.append(i + ",");System.out.println(System.currentTimeMillis() - start);}public static void testStringBuilder() {long start = System.currentTimeMillis();StringBuilder sbl = new StringBuilder();for (int i = 0; i < 200000; i++)sbl.append(i + ",");System.out.println(System.currentTimeMillis() - start);}public static void main(String[] args) {testString();testStringBuffer();testStringBuilder();}


可以很明显的看出来:效率:StringBuilder > StringBuffer > String

三者使用情景:

  • 如果要操作少量的数据 --> String
  • 单线程中,在字符串缓冲区下操作大量数据 --> StringBuilder
  • 多线程中,在字符串缓冲区下操作大量数据 --> StringBuffer

《Java编程思想》读书笔记 第十三章 字符串相关推荐

  1. Java编程思想读书笔记——第七章:复用类

    第七章 复用类 使用类而不破坏现有程序代码,有两种达到这一目的的方法: 在新的类中产生现有类的对象,也就是说new一个对象,这种方法称为组合 按照现有类的类型来创建新类,不改变现有类的形式,在其基础上 ...

  2. Java编程思想读书笔记--第21章并发

    1.基本的线程机制 定义任务 public class LiftOff implements Runnable{protected int countDown = 10;private static ...

  3. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  4. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  5. Java编程思想读书笔记(七)

    点击蓝字 关注我们 今天是端午节,在这里祝大家端午节安康.过节的同时也不要忘记知识储备,今天我 为大家带来了Java编程思想第七节多形性读书笔记.请大家一起品鉴,如果发现里面有啥写的不对的地方,请大家 ...

  6. Java编程思想读书笔记(02)

    第十三章字符串 字符串是不可变的:是final类固不能继承它:也不能通过指向它的引用来修改它的内容. StringBuilder是Java SE5引用的,在这之前用的是StringBuffer.后者是 ...

  7. Java编程思想读书笔记一:并发

    1. Thread.yield( )方法 当调用yield()时,即在建议具有相同优先级的其他线程可以运行了,但是注意的是,仅仅是建议,没有任何机制保证你这个建议会被采纳 .一般情况下,对于任何重要的 ...

  8. Java编程思想读书笔记——字符串

    第十三章 字符串 13.1 不可变String String对象是不可变的(不能够原地修改),具备只读特性.String类中每一个修改String值的方法,实际上是创建了一个新的String对象. 当 ...

  9. java编程思想读书笔记汇总

    第七章:复用类(上) http://blog.csdn.net/u014115673/article/details/53350009 第七章:复用类(下)http://blog.csdn.net/u ...

最新文章

  1. 2014年新鲜出炉的16款免费英文字体
  2. 重要通知:PMCAFF播客上线了!
  3. python使用get和post方法_python爬虫中get和post方法介绍以及cookie作用
  4. sklearn常用模块
  5. Premiere Pro CC2017教程(二) 修改导入静态图片的时间
  6. 0003 无重复字符的最长子串
  7. MMDetection-运行时
  8. lr模型和dnn模型_建立ML或DNN模型的技巧
  9. iOS--数据存储NSUserDefaults
  10. 新代系统plc梯形图说明书_PLC梯形图结构和运行原理讲解,适合初学者!
  11. python格式输出占四列左对齐_python – 打印字符串左对齐,固定宽度和后缀
  12. 发现一个 WPF/E Asp.net Server Control
  13. url 收录工具_为什么我的网站不收录??
  14. 公司git服务器记录
  15. 在CAD中修改标注箭头端样式需要怎么操作?
  16. 笔记本电脑安装Linux系统
  17. html 悬停 div,关于html:如何在div悬停时影响其他元素
  18. 游戏出海正当时,突破文化壁垒或成为关键
  19. VS2017+Fortran2018(intel parallel studio xe 2018 update 3)集成失败【已解决】
  20. 1、Citrix XenDesktop 2203之AD域系统安装(一)

热门文章

  1. 大数据笔记2019.5.11
  2. 零基础Java学习之super关键字
  3. Microsoft Visual C++ 14.0 is required解决方法
  4. word2vec 中的数学
  5. Local模式下Spark程序只输出关键信息
  6. 低版本不能使用php 命令,创建软链接
  7. 【学习笔记】block、inline(替换元素、不可替换元素)、inline-block的理解
  8. eclipse异常关闭,无法启动tomcat解决办法
  9. loadrunner提高篇 - 结果分析实践
  10. javascript 语法