11.6 方法toString

每种对象类型都有一个名为 toString 的方法,用于返回对象的字符串表示。用 printprintln 显示对象时,Java 将调用其方法 toString

这个方法默认显示对象的类型和地址,但可通过提供方法 toString覆盖(override)这种行为。例如,下面是 Time 的方法 toString

  1. public String toString() {
  2. return String.format("%02d:%02d:%04.1f\n",
  3. this.hour, this.minute, this.second);
  4. }

这个方法的定义没有包含关键字 static,因为它不是静态方法,而是实例方法(instance method)。为何叫实例方法呢?因为必须通过类(这里是 Time)的实例来调用。实例方法有时也被称为非静态方法,你可能在错误消息中见过这个术语。

这个方法的方法体与前一节的 printTime 类似,但有两个地方不同:

  • 在这个方法中,我们使用了 this 来引用当前实例,即对其调用该方法的对象;

  • 使用的不是 printf 而是 String.formatString.format 返回一个指定格式的字符串,而不是显示它。

现在可以直接调用 toString 了:

  1. Time time = new Time(11, 59, 59.9);
  2. String s = time.toString();

还可通过 println 间接地调用它:

  1. System.out.println(time);

在这个示例中,toString 中的 thistime 指的是同一个对象。输出为 11:59:59.9