黑马程序员技术交流社区
标题:
关于 toString();的小问题
[打印本页]
作者:
CHJ
时间:
2013-10-5 23:41
标题:
关于 toString();的小问题
本帖最后由 CHJ 于 2013-10-6 17:50 编辑
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay weekDay = WeekDay.SUN;
System.out.println(weekDay.nextDay());
//为什么没调用toString()方法就打印出了字符串?
}
}
复制代码
public class WeekDay {
private WeekDay() {};
public final static WeekDay SUN = new WeekDay();
public final static WeekDay MON = new WeekDay();
public WeekDay nextDay() {
if (this == SUN) {
return MON;
}else {
return SUN;
}
}
public String toString() {
return this == SUN ? "SUN" : "MON";
}
}
复制代码
//为什么没调用toString()方法就打印出了字符串?
作者:
毋须繁华
时间:
2013-10-5 23:48
因为你重写了toString方法,不重写的话,默认调取Object的toString 如果自己重写,就会调用自己的
作者:
FFF
时间:
2013-10-6 00:15
本帖最后由 FFF 于 2013-10-6 00:17 编辑
public class Temp10_06 {
public static void main(String[] args ){
X x = new X();
System.out.println(x);
}
}
class X
{
String Name ="X";
public String toString()
{
return Name="X01";
}
}
复制代码
如以上代码。输出为X01而不是X
重写了toString方法。自动调用。
作者:
lizhangzhi
时间:
2013-10-6 00:31
任何类都是Object的子类,输出某一变量,系统会默认的调用Object的toString()方法,如果想按自己方式定义输出格式,需要复写toString()方法
作者:
doitforyou
时间:
2013-10-6 00:52
weekDay.nextDay()中代表的是一个对象,当你打印一个对象时,系统会自动调用toString()方法,
因为toString()方法其实就是对对象自身的一个自我描述,如果打印此对象,对象就会自动调用自我描述,
此类中因为toString()重写,所以打印结果不是属于Object类中的默认toString()结果。
作者:
麦子
时间:
2013-10-6 08:10
本帖最后由 麦子 于 2013-10-6 08:11 编辑
输出语句在你直接打印对象时,会自动去调用toString方法,由于所有的类都是object的子类,而object中有它自己的toString方法体,所以你不复写的话,它也会调用,只是调用的是object类中的toString方法,它会打出形如:类名@哈希值的
而你复写了该方法,不去调用父类的方法时,默认就走你复写后的方法
好好学习,加油!不懂可以问我
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2