/**
* 关于toString()方法:
* - toString()来自于sun公司提供的Object类,其作用就是将"java对象"转换成"字符串"的形式
* - Object类的toString()方法的默认实现是:
* public String toString(){
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* }
* 含义:调用一个Java对象的toString()方法就可以将Java对象转换成字符串来表示,
* - 由于默认实现不能满足现实的业务需求,今后大多数自定义类的toString()方法都需要重写,重写规则:简单、明了符合业务需求
*
* - 代码:System.out.println(引用);和System.out.println(引用.toString())具有相同的功能;
*/
public class toStringText {
public static void main(String[] args) {
MyDate t1 = new MyDate();
System.out.println(t1.toString()); //不重写toString()方法的输出结果:MyDate@b4c966a
//重写toString()方法的输出结果:1970年1月1日
Student s = new Student("11111","张三");
System.out.println(s); //不重写toString()方法的输出结果:Student@4e50df2e
//重写toString()方法的输出结果:学号:11111,姓名:张三
}
}
class MyDate{
private int year;
private int month;
private int day;
// 无参构造
public MyDate() {
this(1970,1,1); //this()的应用实例 通过当前的构造方法调用其他构造方
//这种语法只能出现在构造方法的第一行
}
// 有参构造方法
public MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
// get and set
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
// 重写toString()方法
public String toString() {
return (year + "年" + month + "月" + day + "日");
}
}
class Student{
private String no;
private String name;
// 有参构造
public Student(String no, String name) {
this.no = no;
this.name = name;
}
// setter and getter
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 重写toString()方法
public String toString() {
return "学号:" + no + ",姓名:" + name;
}
}