toString() 方法
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 41 课,共 87 课。
Java 中的每个类都继承自 Object 类,它提供了几个实用的方法。最常被重写的方法之一是 toString(),它会返回对象的字符串表示形式。
默认情况下,toString() 会返回类名,后面跟着对象的哈希码,这并没有太大帮助:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person@15db9742通过重写 toString(),你可以提供有意义的输出,用来描述对象的状态:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person[name=Alice, age=25]打印对象或将对象与字符串拼接时,会自动调用 toString() 方法。这样调试会容易得多,因为你无需编写额外的代码,就能快速查看对象的内容。
挑战
简单让我们构建一个商品库存系统,通过自定义的 toString() 实现来显示商品的有用信息。你将创建一个 Product 类,重写默认的 toString() 方法,为每件商品提供清晰易读的表示形式。
你将把代码分成两个文件:
Product.java:创建一个表示库存商品的类。每个 Product 都有三个私有字段:name(String)、price(double)和quantity(int)。添加一个用于初始化这三个字段的构造函数。重写toString()方法,使其返回以下确切格式的字符串:Product[name=X, price=Y, quantity=Z],其中 X、Y 和 Z 是对应字段的实际值。价格应显示为普通数字(无需特殊格式)。Main.java:通过创建并显示商品,让你的 Product 类发挥作用。你将收到三个输入:商品名称(String)、价格(double)和数量(int)。使用这些值创建一个 Product,然后直接使用System.out.println()打印该商品对象。由于你重写了toString()方法,程序会自动显示格式化后的商品信息,而不是难以理解的默认输出!
你将收到三个输入:商品名称(String)、价格(double)和数量(int)。
注意,直接打印对象时会自动调用你的 toString() 方法。这能让实际应用中的调试和日志记录变得轻松得多!
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取输入
String name = scanner.nextLine();
double price = scanner.nextDouble();
int quantity = scanner.nextInt();
// TODO:用输入的值创建一个 Product 对象
// TODO:直接打印 Product 对象
// (这会自动调用你的 toString() 方法!)
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
7特殊方法与 Object 类
toString() 方法equals() 和 hashCode()clone() 方法compareTo() 和 ComparableComparator 接口回顾:自定义排序自己练习: Java 在线编译器