《Java编程思想》读书笔记 —— 字符串、数组及枚举类型。
第13章 字符串
1.不可变的 String
String 对象是不可变的,每当修改 String 对象的时候,实际上都是创建了一个新的 String 对象,最初的 String 对象丝毫未动。
2.重载“+”与 StringBuilder
String 对象的不可变性带来一定的效率问题,例如为 String 对象重载的“+”操作符。(用于String的“+”、“+=”是 Java 中仅有的两个重载过的操作符,而 Java 并不允许程序员重载任何操作符)。
public class WhitherStringBuilder {
public String implicit(String[] fields) {
String result = "";
for(int i = 0; i < fields.length; i++)
result += fields[i];
return result;
}
public String explicit(String[] fields) {
StringBuilder result = new StringBuilder();
for(int i = 0; i < fields.length; i++)
result.append(fields[i]);
return result.toString();
}
}
StringBuilder 提供了丰富而全面的方法,包括 append(),toString(),delete(),insert(),replace(),substring() 甚至 reverse()。
3.String 上的操作
String 是固定不变的,而 StringBuffer 和 StringBuilder 可以改变它们的值。
二者唯一的区别是 StringBuilder 是非同步的而 StringBuffer 是同步的。
4.格式化输出
Java SE5 推出了类似 C语言中 printf() 风格的格式化输出这一功能。
public class SimpleFormat {
public static void main(String[] args) {
int x = 5;
double y = 5.332542;
// The old way:
System.out.println("Row 1: [" + x + " " + y + "]");
// The new way:
System.out.format("Row 1: [%d %f]\n", x, y);
// or
System.out.printf("Row 1: [%d %f]\n", x, y);
}
}
/* Output:
Row 1: [5 5.332542]
Row 1: [5 5.332542]
Row 1: [5 5.332542]
*/
format() 和 printf() 是等价的。
Formatter 看一看成一个翻译器,劲格式化字符串与数据翻译成需要的结果。
private Formatter f = new Formatter(System.out);
f.format("%s The Turtle is at (%d,%d)\n", name, x, y);
5.正则表达式
6.扫描输入
Java SE5 新增了 Scanner 类接受任意类型的输入对象。
第16章 数组
第19章 枚举类型
未完待续。。
参考资料
1、读书笔记 JAVA编程思想 第13章 字符串 - CSDN博客
http://blog.csdn.net/imaginedranges/article/details/73335553
2、Java 字符串常用操作(String类) - 薛遗山 - 博客园
http://www.cnblogs.com/freeabyss/archive/2013/05/15/3187057.html
评论 (0)