Java编程思想-第13章 字符串(要点)
可以证明,字符串操作是计算机程序设计中最常见的行为 尤其是在Java大展拳脚的Web系统中更是如此。
在本章中,我们将深入学习在Java语言中应 用最广泛的 String类,并研究与之相关的类及工具。
13.1 不可变 String
String对象是不可变的。查看JDK文档你就会发现, String类中每一个看起来会修改 String 值的方法,实际上都是创建了一个全新的 String对象,以包含修改后的字符串内容。而最初的 String对象则丝毫未动。 看看下面的代码
// strings/Immutable.java
import static net.mindviewutil.Print.*;
public class Immutable{
public static String upcase(String s){
return s.toUpperCase();
}
public static void main(String[] args){
String q = "howdy" print(q); // howdy
String qq = upcase(q);
print(qq); // HOWDY
print(q); // howdy
}
}/* Output:
howdy
HOWDY
howdy *///:
13.2 重载“+”与 StringBuilder
String对象是不可变的,你可以给一个 String对象加任意多的别名。因为String对象具有 只读特性,所以指向它的任何引用都不可能改变它的值,因此,也就不会对其他的引用有什 么影响。 不可变性会带来一定的效率问题。为 String对象重载的“+”操作符就是一个例子。重载的 意思是,一个操作符在应用于特定的类时,被赋予了特殊的意义(用于 String的“+”与“+=” 是Java中仅有的两个重载过的操作符,而Java并不允许程序员重载任何操作符e)。
13.3 无意识的递归
13.5 格式化输出
在长久的等待之后, Java SE5终于推出了C语言中 printi0风格的格式化输出这一功能。这不仅 使得控制输出的代码更加简单,同时也给与Java开发者对于输出格式与排列更强大的控制能力。
13.5.1 printf()
13.5.2 System.out.format()
13.5.3 Formatter类
13.5.4 格式化说明符
13.6 正则表达式
13.7 扫描输入
13.9 总结
过去,Java对字符串操作的支持相当不完善。不过随着近几个版本的升级,我们可以看到 Java已经从其他语言中吸取了许多成熟的经验。到目前为止,它对字符串操作的支持已经很完 善了。不过,有时你还要在细节上注意效率的问题,例如恰当地使用 String Builder等。