13.1 不可变String
String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象。指向的引用对象其实一直待在单一的物理位置上。
13.2 重载+与StringBuilder
+重载的实现原理:自动引入了StringBuilder,因为更高效。在+时,调用了append方法。但并不意味着所有的情况都能使用+,因为在循环中,每次循环都在创建新的StringBuilder对象。
当编写toString方法时,如果字符串操作比较简单,那就可以信赖编译器,它会合理地构造最终的字符串结果。但是,如果要在toString方法中使用循环,那么最好自己创建一个StringBuilder对象,用它来构造最终的结果。
13.3 无意识的递归
容器都有toString方法,并且覆盖此方法使得它生成的String对象能够表达容器自身,以及容器所包含的对象。
打印内存地址时,不应该使用this直接打印,而是应该调用super.toString方法。
13.5 格式化输出
System.out.printf与System.out.format是等价的。
String.format是一个static方法,它接受与Formatter.format方法一样的参数,但返回一个String对象。