第13章 字符串 283

13.1 不可变String 283

13.2 重载“+”与StringBuilder 283

每一个+号,意味着new了一个StringBuilder 对象

13.3 无意识的递归 287

13.4 String上的操作 288

13.5 格式化输出 289

13.5.1 printf() 289

%d 整数;%f 浮点型;%s字符串

13.5.2 System.out.format() 289

等价于printf(),此方法适用于PrintStream或者PrintWriter对象

13.5.3 Formatter类 290

格式化输出

13.5.4 格式化说明符 291

空格对齐

13.5.5 Formatter转换 292

Formatter.formatter()

13.5.6 String.format() 294

String.format()内部还是调用Formatter.formatter()

13.6 正则表达式 295

13.6.1 基础 295
1
2
3
4
5
6
7
8
9
1. 可能有一个负号在最前:-?   即?号表示可能存在
2. 在正则表达式中,\d表示一位数字,在Java中,反斜杠需要转义,即\\d表示一位数字
3. \\\\普通的反斜杠
4. 换行和制表符之类的只需要单个反斜杠:\n\t
5. 一个或多个之前的表达式:+
-?\\d+ :表示可能有一个负号,后面跟着一位或多位数字
6. | 表示或者,(-|\\+)?\\d+ 表示以一个加号或减号开头(可能都没有,因为后面有个问号)的数字,由于字符+在正则表达式中有特殊含义,需要\\转义
7. \W(Java中需要写成\\W):非单词字符
8. \w(Java中需要写成\\w):一个单词字符
13.6.2 创建正则表达式 297

jdk1.6的正则表达式:

13.6.3 量词 299

CharSequence接口,正则表达式能接受此接口类型的参数

13.6.4 Pattern和Matcher 300

相关方法的用法

13.6.5 split() 305
1
2
3
split(CharSequence input)
split(CharSequence input, int limit)
limit表示分割后数组的大小,限制分割
13.6.6 替换操作 306

replace相关操作

13.6.7 reset() 307
13.6.8 正则表达式与Java I/O 307

13.7 扫描输入 309

Scanner 类是jdk1.5新加入的

13.7.1 Scanner定界符 310

默认空白字符分割,可以使用正则表达式指定

scanner.useDelimiter(pattern)

13.7.2 用正则表达式扫描 311
1
2
3
4
scanner.next(pattern);
MatchResult match = scanner.match();
match.group(1);
match.group(1);

13.8 StringTokenizer 312

作者说基本上可以放弃了,使用正则表达式或者Scanner就可以了

13.9 总结 312


书籍相关资源:

pdf文档链接:https://pan.baidu.com/s/1yuWb_kI0sB3yHLBndPcyEg 提取码:scvw
书中demo: https://github.com/BruceEckel/TIJ4-code
Thinking in Java 4th英文版的课后习题答案: http://greggordon.org/java/tij4/solutions.htm