黑马程序员技术交流社区
标题:
关于toString方法是怎么调用的?
[打印本页]
作者:
黑马张健
时间:
2012-3-20 14:21
标题:
关于toString方法是怎么调用的?
下面有一个例子,
public class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN = new WeekDay1();
public final static WeekDay1 MON = new WeekDay1();
public WeekDay1 nextDay(){
if(this == SUN){
return MON;
}else{
return SUN;
}
}
public String toString(){
return this == SUN?"SUN":"MON";
}
}
public class EnumTest {
public static void main(String[] args) {
WeekDay1 w = WeekDay1.SUN;
System.out.println(w.nextDay());
}
}
打印结果为:MON
调用的是nextDay方法,最后却打印出了toString()方法里的MON,nextDay与toString这个方法之间有什么关系,以及toString()这个方法是在什么时候被调用的?
有点迷糊,请高手指点一下!
作者:
魏群
时间:
2012-3-20 14:28
w.nextDay()); 返回的是枚举类型MON是个常量
System.out.println(w.nextDay());时调用这个常量的toString() 方法
public String toString()返回枚举常量的名称,这是枚举类重写的toString()方法。返回常量名。
所以你的System.out.println(w.nextDay());返回的就是枚举常量名称。
作者:
♂诸侯♂
时间:
2012-3-20 14:29
class Person {
private String name;
private String sex;
public String toString() {
return name + "-" + sex;
}
}
Person p = new Persion();
System.err.println(p);
会调用p的toString()
P在println的里边的东西的时候调用。
作者:
贠(yun)靖
时间:
2012-3-20 16:56
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。
它通常只是为了方便输出,比如System.out.println(xx),
括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法
总而言之,
它只是为了方便所有类的字符串操作而特意加入的一个方法
写这个方法的用途就是为了方便操作
public class Demo{
public static class innerClass
{
public String toString()
{ return "toString"; }
}
public static void main(String[] args)
{
innerClass obj = new innerClass ();
System.out.println(obj);
}
}
如果某个方法里面有如下句子:
innerClass obj=new innerClass ();
System.out.println(obj);
会得到输出: toString
作者:
周建
时间:
2012-3-20 18:00
toString()Object的方法,Object是所有类的父类,所以此处应为重写,且在输出语句中System.out.println(obj);默认调用toString();
在你的程序中toString()与nextDay()没有直接关系,System.out.println(w);也会默认调用toString()输出SUN;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2