《Java编程思想》读书笔记(六)

wshunli
2017-12-04 / 0 评论 / 92 阅读 / 正在检测是否收录...

《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 上的操作

Java 字符串常用操作(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

评论 (0)

取消