狠狠撸

狠狠撸Share a Scribd company logo
String
Agenda
概述
? 字符串可以说是任何编程语言中最长见到的数
  据类型了, 在前面的很多章节中也涉及到了一
  些字符串的操作;
? Java的字符串由java.lang.String类来实现, 该类
  提供了很多实用的方法对字符串进行操作;
? 对于字符串最重要的一点是java字符串对象的
  内容是不可变的, 在进行字符串操作的过程中
  总是有新的字符串对象被创建, 而不是原有的
  对象被修改.
不可变的字符串
               immutable string
? 对字符串对象的任何操作: 合并, 大小写转
  换, 截取等都不会改变原有的对象, 每次都会
  创建一个新的字符串对象并且返回; 示例:
  String s1 = “good”, s2 = “bye”;
  String s = s1 + s2; // 返回goodbye, s1/s2不变;
  s1.upperCase(); // 返回GOOD, s1不变;
  s1.substring(0, 2); // 返回go, s1不变;
? 示例: demo/Demo1.java
字符串操作
? 构造器
  String()    创建一个空字符串
  String(StringBuilder) 拷贝StringBuilder的内容
  String(StringBuffer)  拷贝StringBuffer的内容
? length()         长度
? chatAt(int)返回指定位置的字符, 从0开始
? getChars(), getBytes()
  返回字符/字节数组
? equals/equalsIgnoreCase
 字符串的内容是否相等, 后者不区分大小写
? compareTo
比较字符串大小, 返回负数/0/整数
? contains
是否包含某个子字符串
字符串操作
? startsWith/endsWith
是否以某个字符串开头或者结尾
? indexOf/lastIndexOf
返回某个子字符串的起始位置或者最后出现的位置
? substring
返回指定位置的一个子字符串
? concat
字符串合并, 通常使用加号
? replace
替换字符串的某些部分
? toLowerCase/toUpperCase
转换字符串大小写
? trim
去掉字符串开始和结尾的空格字符
? valueOf
static方法, 将其他的对象转换为字符串, 比如String s = String.valueOf(new
Integer(4))
格式化输出
? JDK5引入了System.out.format或者printf用于格
  式化输出, 示例:
  int i = 5;
  double d = 5.3;
  System.out.format(“Row 1: *%d %f+n”, x, y); // 或者
  System.out.printf(“Row 1: *%d %f+n”, x, y);
? 示例: demo/Demo2.java
? java.util.Formatter用于格式化字符串, 输出到标
  准输出或者附加到某个对象, 比如:
  Formatter fmt = new Formatter(System.out);
  fmt.format(“Now is %d o’clock”, 5); // 输出到标准输出
  StringBuffer buf = new StringBuffer();
  Formatter fmt = new Formatter(buf);
  fmt.format(“Now is %d o’clock”, 5); // 添加到StringBuffer
  System.out.println(buf.toString());
? 示例: demo/Demo3.java
格式化输出
                 常用的占位符
? 以上一节的” Now is %d o’clock” 为例, 这里的
  %d就是一个占位符, 表示相应位置的参数格
  式化为一个整数; 常用的占位符有:
  d   Integral (as decimal)
  x   Hex
  c   Unicode character
  b   Boolean value
  s   String
? 示例: demo/Demo4.java
格式化输出
               String.format
? JDK5同样为String类引入了静态方法实现字
  符串的格式化, 其功能与前述的两种方式相
  同, 示例:
  String s= fmt.format(“Now is %d o’clock”, 5);
? 示例: demo/Demo5.java
CharSequence
? 字符串本身就是一串字符的集合, java中所
  有的字符串类型包含String, StringBuffer和
  StringBuilder都实现了这个接口, 接口的规范
  如下:
 interface CharSequence {
     charAt(int i);
     length();
     subSequence(int start,| int end);
     toString();
 }
读取标准输入
                          Scanner
? 应用程序往往需要扫描相关的输入来并进行相应的
  处理, JDK5提供了工具类java.util.Scanner用于实现该
  功能; 通过以下构造器创建Scanner对象:
  Scanner(File)             指定某个文件作为输入
  Scanner(InputStream)      指定某个输入流作为输入
  Scanner(String)           使用字符串最为扫描的对象
Scanner提供了如下工具方法:
  nextLine()             读取下一行;
  nextInt()              读取下一个token(默认使用空格分隔), 并
                         返回一个整数; 如果该token不能被解析
                         为一个整数或者超出范围则抛出异常.
  hasNext()              是否还有下一个token
  next()                 返回下一个token, String类型
? 示例: demo/Demo6.java
Scanner vs. StringTokenizer
? 在JDK5之前可以使用StringTokenizer实现类
  似Scanner的功能, 但是易用性不如后者; 示
  例:
  String input = "But I’m not dead yet! I feel happy!";
  StringTokenizer stoke = new StringTokenizer(input);
  while(stoke.hasMoreElements())
     System.out.print(stoke.nextToken() + " ");

? 示例: demo/Demo7.java
StringBuffer
? 与String相同, StringBuffer也表示一个字符串对
  象, 示例:
  StringBuffer buf = new StringBuffer(“Hello”);
  System.out.println(buf.toString()); // Hello
? 不同之处在于StringBuffer的内容是可以更改的,
  它提供了如下接口用于修改字符串的内容:
  append        追加字符串
  delete        删除指定位置的字符串
  insert        在指定的位置插入字符串
  replace       替换指定位置的字符串
? 示例: demo/Demo8.java
StringBuffer
      vs. String vs.StringBuilder
? 当需要频繁的进行字符串修改时, 使用string
  是不太合适的, 因为这样会导致大量的对象
  被创建和回收, 造成一定的性能因素; 在这
  种情况下可以使用StringBuffer;
? StringBuilder与StringBuffer的类似, 也表示可
  以修改的字符串; 两者的区别在于前者是线
  程安全的(thread-safe), 而后者是线程不安全
  的; 这意味这前者在具体的使用中性能会稍
  弱于后者.
END
Ad

Recommended

5, initialization & cleanup
5, initialization & cleanup
ted-xu
?
Java Script 引擎技术
Java Script 引擎技术
bigqiang zou
?
流程语法与函式
流程语法与函式
Justin Lin
?
從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
?
型态与运算子
型态与运算子
Justin Lin
?
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
Will Huang
?
[圣思园][Java SE]Jdk5
[圣思园][Java SE]Jdk5
ArBing Xie
?
例外处理
例外处理
Justin Lin
?
functional-scala
functional-scala
wang hongjiang
?
Scala function-and-closures
Scala function-and-closures
wang hongjiang
?
从模组到类别
从模组到类别
Justin Lin
?
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
Will Huang
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
?
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
?
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
?
Java 8 與 retrolambda
Java 8 與 retrolambda
Justin Lin
?
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Li Hsuan Hung
?
02.辫测迟丑辞苍基础
02.辫测迟丑辞苍基础
modou li
?
Clojure
Clojure
Di Xu
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
?
资料永续与交换
资料永续与交换
Justin Lin
?
2, object oriented programming
2, object oriented programming
ted-xu
?
滨翱厂入门分享
滨翱厂入门分享
zenyuhao
?
流程语法与函式
流程语法与函式
Justin Lin
?
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
ArBing Xie
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?
Livro de medicina ambulatorial capt7
Livro de medicina ambulatorial capt7
radica93
?
Propuestas de salud candidatos 2012
Benemérita Universidad Autónoma de Puebla
?

More Related Content

What's hot (20)

functional-scala
functional-scala
wang hongjiang
?
Scala function-and-closures
Scala function-and-closures
wang hongjiang
?
从模组到类别
从模组到类别
Justin Lin
?
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
Will Huang
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
?
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
?
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
?
Java 8 與 retrolambda
Java 8 與 retrolambda
Justin Lin
?
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Li Hsuan Hung
?
02.辫测迟丑辞苍基础
02.辫测迟丑辞苍基础
modou li
?
Clojure
Clojure
Di Xu
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
?
资料永续与交换
资料永续与交换
Justin Lin
?
2, object oriented programming
2, object oriented programming
ted-xu
?
滨翱厂入门分享
滨翱厂入门分享
zenyuhao
?
流程语法与函式
流程语法与函式
Justin Lin
?
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
ArBing Xie
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?
Scala function-and-closures
Scala function-and-closures
wang hongjiang
?
从模组到类别
从模组到类别
Justin Lin
?
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
Will Huang
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
?
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
?
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
?
Java 8 與 retrolambda
Java 8 與 retrolambda
Justin Lin
?
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Li Hsuan Hung
?
02.辫测迟丑辞苍基础
02.辫测迟丑辞苍基础
modou li
?
Clojure
Clojure
Di Xu
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
?
资料永续与交换
资料永续与交换
Justin Lin
?
2, object oriented programming
2, object oriented programming
ted-xu
?
滨翱厂入门分享
滨翱厂入门分享
zenyuhao
?
流程语法与函式
流程语法与函式
Justin Lin
?
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
ArBing Xie
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?

Viewers also liked (9)

Livro de medicina ambulatorial capt7
Livro de medicina ambulatorial capt7
radica93
?
Propuestas de salud candidatos 2012
Benemérita Universidad Autónoma de Puebla
?
Familia escola
conceicaocorrea
?
Diplomado CM-UAI
ComunidadMujer Cm
?
H. Araneda // III Barómetro Mujer y Trabajo 2011
ComunidadMujer Cm
?
Rubyのコーディング規約 @ Niigata.rb #3
Rubyのコーディング規約 @ Niigata.rb #3
Mihyaeru Takano
?
Curso rea eutm encuentro 1: Conocimiento abierto y materiales educativos
Natalia Hetery
?
Guerradecomandoecontrole fean-2011
Jo?o Rufino de Sales
?
Actividad 2
cristianvillada
?
Livro de medicina ambulatorial capt7
Livro de medicina ambulatorial capt7
radica93
?
Propuestas de salud candidatos 2012
Benemérita Universidad Autónoma de Puebla
?
Familia escola
conceicaocorrea
?
Diplomado CM-UAI
ComunidadMujer Cm
?
H. Araneda // III Barómetro Mujer y Trabajo 2011
ComunidadMujer Cm
?
Rubyのコーディング規約 @ Niigata.rb #3
Rubyのコーディング規約 @ Niigata.rb #3
Mihyaeru Takano
?
Curso rea eutm encuentro 1: Conocimiento abierto y materiales educativos
Natalia Hetery
?
Guerradecomandoecontrole fean-2011
Jo?o Rufino de Sales
?
Actividad 2
cristianvillada
?
Ad

Similar to 12, string (20)

Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]
yiditushe
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
模块一-骋辞语言特性.辫诲蹿
模块一-骋辞语言特性.辫诲蹿
czzz1
?
3. java basics
3. java basics
netdbncku
?
13, io
13, io
ted-xu
?
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
?
Sun java
Sun java
softwaredesigner
?
Java8 lambda
Java8 lambda
koji lin
?
闯补惫补华为面试题
闯补惫补华为面试题
yiditushe
?
Ecmascript
Ecmascript
jay li
?
快速了解笔辞蝉迟驳谤别厂蚕尝
快速了解笔辞蝉迟驳谤别厂蚕尝
正中 周
?
11, exceptions
11, exceptions
ted-xu
?
Java 網路程式
Java 網路程式
PingLun Liao
?
02 Objective-C
02 Objective-C
Tom Fan
?
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
永立 連
?
getPDF.aspx
getPDF.aspx
byron zhao
?
getPDF.aspx
getPDF.aspx
byron zhao
?
SCJP ch17
SCJP ch17
r82093403
?
颁语言产别苍肠丑尘补谤办覆盖信息收集总结4
颁语言产别苍肠丑尘补谤办覆盖信息收集总结4
Tao He
?
箩补蝉尘颈苍别入门指南
箩补蝉尘颈苍别入门指南
Zhicheng Wang
?
Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]
yiditushe
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
模块一-骋辞语言特性.辫诲蹿
模块一-骋辞语言特性.辫诲蹿
czzz1
?
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
?
闯补惫补华为面试题
闯补惫补华为面试题
yiditushe
?
Ecmascript
Ecmascript
jay li
?
快速了解笔辞蝉迟驳谤别厂蚕尝
快速了解笔辞蝉迟驳谤别厂蚕尝
正中 周
?
11, exceptions
11, exceptions
ted-xu
?
02 Objective-C
02 Objective-C
Tom Fan
?
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
看似比較簡單的推坑教學 C語言從崩潰到崩潰Ex(二)
永立 連
?
颁语言产别苍肠丑尘补谤办覆盖信息收集总结4
颁语言产别苍肠丑尘补谤办覆盖信息收集总结4
Tao He
?
箩补蝉尘颈苍别入门指南
箩补蝉尘颈苍别入门指南
Zhicheng Wang
?
Ad

More from ted-xu (20)

11, OCP - awr & alert system
11, OCP - awr & alert system
ted-xu
?
10, OCP - flashback
10, OCP - flashback
ted-xu
?
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
ted-xu
?
8, OCP - backup with rman
8, OCP - backup with rman
ted-xu
?
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
ted-xu
?
6, OCP - oracle security
6, OCP - oracle security
ted-xu
?
5, OCP - oracle storage
5, OCP - oracle storage
ted-xu
?
4, OCP - oracle networking
4, OCP - oracle networking
ted-xu
?
3, OCP - instance management
3, OCP - instance management
ted-xu
?
2, OCP - installing and creating a database
2, OCP - installing and creating a database
ted-xu
?
1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
?
12, OCP - performance tuning
12, OCP - performance tuning
ted-xu
?
7, business event system
7, business event system
ted-xu
?
6, workflow miscellaneous
6, workflow miscellaneous
ted-xu
?
5, workflow function activity
5, workflow function activity
ted-xu
?
4, workflow tables & api
4, workflow tables & api
ted-xu
?
3, workflow in ebs
3, workflow in ebs
ted-xu
?
2, a simple workflow
2, a simple workflow
ted-xu
?
1, workflow intro
1, workflow intro
ted-xu
?
8, bes tables & api
8, bes tables & api
ted-xu
?
11, OCP - awr & alert system
11, OCP - awr & alert system
ted-xu
?
10, OCP - flashback
10, OCP - flashback
ted-xu
?
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
ted-xu
?
8, OCP - backup with rman
8, OCP - backup with rman
ted-xu
?
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
ted-xu
?
6, OCP - oracle security
6, OCP - oracle security
ted-xu
?
5, OCP - oracle storage
5, OCP - oracle storage
ted-xu
?
4, OCP - oracle networking
4, OCP - oracle networking
ted-xu
?
3, OCP - instance management
3, OCP - instance management
ted-xu
?
2, OCP - installing and creating a database
2, OCP - installing and creating a database
ted-xu
?
1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
?
12, OCP - performance tuning
12, OCP - performance tuning
ted-xu
?
7, business event system
7, business event system
ted-xu
?
6, workflow miscellaneous
6, workflow miscellaneous
ted-xu
?
5, workflow function activity
5, workflow function activity
ted-xu
?
4, workflow tables & api
4, workflow tables & api
ted-xu
?
3, workflow in ebs
3, workflow in ebs
ted-xu
?
2, a simple workflow
2, a simple workflow
ted-xu
?
1, workflow intro
1, workflow intro
ted-xu
?
8, bes tables & api
8, bes tables & api
ted-xu
?

12, string

  • 3. 概述 ? 字符串可以说是任何编程语言中最长见到的数 据类型了, 在前面的很多章节中也涉及到了一 些字符串的操作; ? Java的字符串由java.lang.String类来实现, 该类 提供了很多实用的方法对字符串进行操作; ? 对于字符串最重要的一点是java字符串对象的 内容是不可变的, 在进行字符串操作的过程中 总是有新的字符串对象被创建, 而不是原有的 对象被修改.
  • 4. 不可变的字符串 immutable string ? 对字符串对象的任何操作: 合并, 大小写转 换, 截取等都不会改变原有的对象, 每次都会 创建一个新的字符串对象并且返回; 示例: String s1 = “good”, s2 = “bye”; String s = s1 + s2; // 返回goodbye, s1/s2不变; s1.upperCase(); // 返回GOOD, s1不变; s1.substring(0, 2); // 返回go, s1不变; ? 示例: demo/Demo1.java
  • 5. 字符串操作 ? 构造器 String() 创建一个空字符串 String(StringBuilder) 拷贝StringBuilder的内容 String(StringBuffer) 拷贝StringBuffer的内容 ? length() 长度 ? chatAt(int)返回指定位置的字符, 从0开始 ? getChars(), getBytes() 返回字符/字节数组 ? equals/equalsIgnoreCase 字符串的内容是否相等, 后者不区分大小写 ? compareTo 比较字符串大小, 返回负数/0/整数 ? contains 是否包含某个子字符串
  • 6. 字符串操作 ? startsWith/endsWith 是否以某个字符串开头或者结尾 ? indexOf/lastIndexOf 返回某个子字符串的起始位置或者最后出现的位置 ? substring 返回指定位置的一个子字符串 ? concat 字符串合并, 通常使用加号 ? replace 替换字符串的某些部分 ? toLowerCase/toUpperCase 转换字符串大小写 ? trim 去掉字符串开始和结尾的空格字符 ? valueOf static方法, 将其他的对象转换为字符串, 比如String s = String.valueOf(new Integer(4))
  • 7. 格式化输出 ? JDK5引入了System.out.format或者printf用于格 式化输出, 示例: int i = 5; double d = 5.3; System.out.format(“Row 1: *%d %f+n”, x, y); // 或者 System.out.printf(“Row 1: *%d %f+n”, x, y); ? 示例: demo/Demo2.java ? java.util.Formatter用于格式化字符串, 输出到标 准输出或者附加到某个对象, 比如: Formatter fmt = new Formatter(System.out); fmt.format(“Now is %d o’clock”, 5); // 输出到标准输出 StringBuffer buf = new StringBuffer(); Formatter fmt = new Formatter(buf); fmt.format(“Now is %d o’clock”, 5); // 添加到StringBuffer System.out.println(buf.toString()); ? 示例: demo/Demo3.java
  • 8. 格式化输出 常用的占位符 ? 以上一节的” Now is %d o’clock” 为例, 这里的 %d就是一个占位符, 表示相应位置的参数格 式化为一个整数; 常用的占位符有: d Integral (as decimal) x Hex c Unicode character b Boolean value s String ? 示例: demo/Demo4.java
  • 9. 格式化输出 String.format ? JDK5同样为String类引入了静态方法实现字 符串的格式化, 其功能与前述的两种方式相 同, 示例: String s= fmt.format(“Now is %d o’clock”, 5); ? 示例: demo/Demo5.java
  • 10. CharSequence ? 字符串本身就是一串字符的集合, java中所 有的字符串类型包含String, StringBuffer和 StringBuilder都实现了这个接口, 接口的规范 如下: interface CharSequence { charAt(int i); length(); subSequence(int start,| int end); toString(); }
  • 11. 读取标准输入 Scanner ? 应用程序往往需要扫描相关的输入来并进行相应的 处理, JDK5提供了工具类java.util.Scanner用于实现该 功能; 通过以下构造器创建Scanner对象: Scanner(File) 指定某个文件作为输入 Scanner(InputStream) 指定某个输入流作为输入 Scanner(String) 使用字符串最为扫描的对象 Scanner提供了如下工具方法: nextLine() 读取下一行; nextInt() 读取下一个token(默认使用空格分隔), 并 返回一个整数; 如果该token不能被解析 为一个整数或者超出范围则抛出异常. hasNext() 是否还有下一个token next() 返回下一个token, String类型 ? 示例: demo/Demo6.java
  • 12. Scanner vs. StringTokenizer ? 在JDK5之前可以使用StringTokenizer实现类 似Scanner的功能, 但是易用性不如后者; 示 例: String input = "But I’m not dead yet! I feel happy!"; StringTokenizer stoke = new StringTokenizer(input); while(stoke.hasMoreElements()) System.out.print(stoke.nextToken() + " "); ? 示例: demo/Demo7.java
  • 13. StringBuffer ? 与String相同, StringBuffer也表示一个字符串对 象, 示例: StringBuffer buf = new StringBuffer(“Hello”); System.out.println(buf.toString()); // Hello ? 不同之处在于StringBuffer的内容是可以更改的, 它提供了如下接口用于修改字符串的内容: append 追加字符串 delete 删除指定位置的字符串 insert 在指定的位置插入字符串 replace 替换指定位置的字符串 ? 示例: demo/Demo8.java
  • 14. StringBuffer vs. String vs.StringBuilder ? 当需要频繁的进行字符串修改时, 使用string 是不太合适的, 因为这样会导致大量的对象 被创建和回收, 造成一定的性能因素; 在这 种情况下可以使用StringBuffer; ? StringBuilder与StringBuffer的类似, 也表示可 以修改的字符串; 两者的区别在于前者是线 程安全的(thread-safe), 而后者是线程不安全 的; 这意味这前者在具体的使用中性能会稍 弱于后者.
  • 15. END