黑马程序员技术交流社区
标题:
toString()是怎么被自动调用的啊,求解答
[打印本页]
作者:
Mr.飞碍特
时间:
2014-4-22 09:33
标题:
toString()是怎么被自动调用的啊,求解答
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN = new WeekDay1(){
public WeekDay1 nextDay() {
return MON;
}
};
public final static WeekDay1 MON = new WeekDay1(){
public WeekDay1 nextDay() {
return SUN;
}
};
public abstract WeekDay1 nextDay();
public String toString(){
return this==SUN?"SUN":"MON";
}
}
public class EnumTest {
public static void main(String[] args) {
WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.nextDay());//weekDay.nextDay()得到的是对象 但打印的时候却打印出的字符串,调用tostring()方法的原理是什么???都有什么情况会调用他?如果这样写呢weekDay.nextDay().tostring()
}
}
复制代码
作者:
二小傻
时间:
2014-4-22 09:47
toString 在使用print直接打印对象的时候自动调用的,你不写toString 方法的话 也会自动调用系统的toString。
作者:
海世山盟
时间:
2014-4-22 09:58
toString 来源于根类Object。返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。所以任何一个类(类都继承了Object)都会有otString()方法。
所以当我们在输出对象信息时,只要该对象包含了toString方法(例如:我们建了一个Student类,Student类默认继承了Object所以也就默认有了otString()方法),当我们在输出对象信息(例如打印学生信息)时都会自动调用toString方法。我们要想根据自己的意愿打印,就需要复写otString()方法即可。
当对象本身没有toString()方法时(例如数组),如果我们直接打印数组,那打印的就只能是数组的首地址了。此时如果想将数组作为字符串的形式返回,那就必须显示调用Arrays里面的toString(T[] t)方法。
作者:
坏米饭
时间:
2014-4-22 11:45
楼上的,你toString()方法都写错了。
System.out.println()方法就是把参数转换成String。
你自己可以去找源码看:
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
作者:
Mr.飞碍特
时间:
2014-4-22 11:51
4l赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2