JAVA问题 toString()的重构

来源:百度知道 编辑:UC知道 时间:2024/05/19 07:26:58
比如说有两个类Employee和Test,代码如下:
class Employee {
private String name;
private double salary;
private Date hireDay;
public Employee(String n, double s, int year, int month, int day) {
name = n;
salary = s;
……
}
public String toString() {
return getClass().getName()
+ "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay +
"]";
}
}
Test类代码如下:
public class EqualsTest {
public static void main(String[] args) {
Employee bob = new Employee("Zhangfan", 5000, 1989, 10, 1);
System.out.println("bob.toString():" + bob);
//但是我这里并没有调用bob里面的toString()方法,为什么也会这样
}
}

运行后显示的结果是:
bob.toString():Employee[name=Zhangfan,salary=5000.0,hireDay=Sun Oct 01 00:00:00 GMT 1989]

但是我并没有System

关键在于System.out.println()
这个方法默认打印传入参数的.toString()

楼上已经说了答案了..你还在等什么?

关键在运算符"+",如果"+"的一个操作数是字符串,则编译器会把"+"的另一个操作数转换为字符串,如果改操作数是一个对象,则其toString()方法会自动被调用以便生成字符串。