【话题:学习交流】Java中,对toString()方法重写后的疑惑???

_明月 2017-03-07 07:34:52
对于toString()方法,其中有一个现象,我非常奇怪。先下列代码片段一、代码片段二所述。

toString()方法,是源自于Object类中的一个方法。

代码片段一

//Test类
package Test_07_01;

public class Test {
public static void main(String[] args) {
//Student st = new Student("张三", 10, '男');
System.out.println(st);

}
}

//Student类
package Test_07_01;

public class Student {
public int age;
public String name;
public char gender;

public Student() {
super();
}


}



对于“代码片段一”运行的结果为:Test_07_01.Student@15db9742


代码片段一

//Test类
package Test_07_01;

public class Test {
public static void main(String[] args) {
Student st = new Student("张三", 10, '男');
System.out.println(st);

}
}

//Student类
package Test_07_01;

public class Student {
public int age;
public String name;
public char gender;

public Student(String name, int age, char gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}


public String toString() {
return "name:" + name + " age:" + age + " gender:" + gender;
}


}



对于“代码片段二”运行的结果为:name:张三 age:10 gender:男


对于代码片段一、代码片段二运行结果出现的异同,我想问的是:在Test类中的Main()中,我实例化了Student类的对象st,但是在输出时,并没有对st对象调用重写后的toString()方法。为何在代码片段二中,运行Main()后,系统会自动调用toString()方法呢?系统输出:name:张三 age:10 gender:男

这到底是怎么一回事呢?

由于本阶段,个人时间紧迫,在文章的最后就不分享古诗和图片了。抱歉了



...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_明月 2017-03-08
  • 打赏
  • 举报
回复
引用 3 楼 u011320740 的回复:
是楼上说的这么回事
嗯,谢谢。
菜 头 2017-03-08
  • 打赏
  • 举报
回复
是楼上说的这么回事
_明月 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
System.out.println();底层使用String.valueOf(Objec o)就是调用对象的toString()方法
是这样啊。 谢谢
李德胜1995 2017-03-07
  • 打赏
  • 举报
回复
System.out.println();底层使用String.valueOf(Objec o)就是调用对象的toString()方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧