当需要为一个类编写 toString() 方法时,如果字符串操作比较简单,便可以信赖编译器,它会为你合理地构造最终的字符串结果(而不会不断创建冗余的中间变量)。

String mongo = "mongo";
String s = "abc" + "mongo" + "def" + 47;// StringBuilder.apppend("abc").append(mongo).append("def").append(47)// StringBuilder.toString() ⇒ s

但如果要在 toString() 方法中使用循环,那么最好自己创建(而不是交由编译器)一个 StringBuilder 对象,用它来构造最终的结果。

StringBuilder result = new StringBuilder();
for () {result.append(...);
}
return result.toString();

1. String 与 StringBuilder

String 对象是不可变的,你可以赋给一个 String 对象任意多的别名。因为 String 对象具有只读特性,指向它的任何引用都不可能改变它的值。因此,也就不会对其他的引用有什么影响。

2. StringBuilder 丰富的成员函数

  • 最常用的:append(), toString()
  • insert(), replace(), substring(), reverse()
  • delete(start, end):注意端点的开闭性;

    • 比如删除末尾的两个元素:
    delete(seq.length()-2, seq.length())

Effective Java(二)—— 循环与 StringBuilder相关推荐

  1. Java while循环与dowhile循环

    Java while循环与dowhile循环 1.while循环 2.do...while循环 1.while循环 语法 while(表达式){ 循环体 } 循环三要素1.变量初始化 2.循环条件的判 ...

  2. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  3. Effective Java读书笔记二:枚举和注解

    第30条:用enum代替int常量 当需要一组固定常量的时候,应该使用enum代替int常量,除了对于手机登资源有限的设备应该酌情考虑enum的性能弱势之外. 第31条:用实例域代替序数 枚举的ord ...

  4. 《Effective Java》阅读笔记(二)

    最近在看<Effective Java>这本书,顺便就记录一些笔记,记录一下书中的一些知识点以及对知识点的总结.一般情况会记录所有的知识点,但是知识点太过简单或者无归纳点总结的就不做详细记 ...

  5. \(^_^)/ Effective java

    读<Effect Java中文版> 译者序 序 前言 第1章引言 1   第2章创建和销毁对象 4 第1条:考虑用静态工厂方法代替构造函数 4 第2条:使用私有构造函数强化singleto ...

  6. 读完 Effective Java,我整理了 59 条技巧!(含pdf)

    点击⬆️方"逆锋起笔",公众号回复 编程资源领取大佬们推荐的学习资料 上一篇:CTO 写低级 Bug,致公司 70 GB 数据泄露! 作者:Dong GuoChao 链接:http ...

  7. 5天带你读完《Effective Java》(三)

    <Effective Java>是Java开发领域无可争议的经典之作,连Java之父James Gosling都说: "如果说我需要一本Java编程的书,那就是它了". ...

  8. 《Effective Java》真的是一本值得一直去钻研的好书

    文章目录 <Effective Java>读书笔记 第一章 引言 第二章 创建和销毁对象 1 考虑使用静态工厂方法替代构造方法** 2 当构造方法参数过多时使用builder(建造者) 模 ...

  9. 第 3 次读 Effective Java,这 58 个技巧最值!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...

最新文章

  1. java web service_怎样新建一个Java的Web Service
  2. 学习使用Free RTOS ,移植最新的STM32 v3.5固件库
  3. 最优化——单纯形法学习心得
  4. C#实现RSA加密解密
  5. mysql char(36)_MySQL中char(36)被認為是GUID導致的BUG及解決方案
  6. 奔图打印机显示未连接_国货之“彩” |奔图CP2200DW彩色激光打印机首测
  7. L2TP OVER IPSEC原理详解
  8. 一大推DISCUZ系列插件模板来了,需要的免费抢!!!
  9. Delphi7安装及补丁安装详解
  10. 人工智能知识点思维导图,人工智能算法思维导图
  11. 石墨烯 量子计算机,带石墨烯的量子计算
  12. matlab学习笔记 clc和clear
  13. matlab信道容量函数,信息论-matlab求信道容量(迭代法) | 学步园
  14. Edge 被 hao123 劫持解决方法
  15. android系统自带system/app下载,Android 把应用APK安装包放到system/app下的方法
  16. wps插入I,II,III类的页码
  17. css保持图片原始比例
  18. Vue 3.0终于来了!官方凌晨开源代码,导读一波
  19. JDK1.8之前造成HashMap死链问题
  20. 未来计算机作文英语作文,2019英语作文预测:人工智能

热门文章

  1. android+JPEG+编码,Android_解析:android 如何从JPEG生成BufferedImage,如下所示:复制代码 代码如下 - phpStudy...
  2. insert执行成功 没有数据_Python—接口测试数据库封装实现原理
  3. 工作中遇到的问题 二 乱码问题
  4. android 代码循环,Android – 每5秒循环一部分代码
  5. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...
  6. 重试次数配置_Stelnet(ssh)登陆华为交换机配置教程
  7. PCA算法的原理C++ Eigen库实现(附源码下载)
  8. Delphi Open Tools Api实例研究(一)
  9. 【AtCoder】ARC090
  10. iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码