A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. public abstract class WeekDay1 {
  2.         private WeekDay1(){}
  3.         
  4.         public final static WeekDay1 SUN = new WeekDay1(){
  5.                 public WeekDay1 nextDay() {        
  6.                         return MON;
  7.                 }        
  8.         };

  9.         public final static WeekDay1 MON = new WeekDay1(){               
  10.                 public WeekDay1 nextDay() {               
  11.                         return SUN;
  12.                 }        
  13.         };        
  14.         
  15.         public abstract WeekDay1 nextDay();
  16.         
  17.         public String toString(){
  18.                 return this==SUN?"SUN":"MON";
  19.         }
  20. }
  21. public class EnumTest {
  22.         public static void main(String[] args) {
  23.         WeekDay1 weekDay = WeekDay1.MON;
  24.         System.out.println(weekDay.nextDay());//weekDay.nextDay()得到的是对象 但打印的时候却打印出的字符串,调用tostring()方法的原理是什么???都有什么情况会调用他?如果这样写呢weekDay.nextDay().tostring()   
  25.        }
  26. }
复制代码



点评

认真看毕老师视频,里面都已经讲解很清楚了!!!  发表于 2014-4-22 12:22

5 个回复

倒序浏览
toString 在使用print直接打印对象的时候自动调用的,你不写toString 方法的话 也会自动调用系统的toString。
回复 使用道具 举报
toString 来源于根类Object。返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。所以任何一个类(类都继承了Object)都会有otString()方法。
      所以当我们在输出对象信息时,只要该对象包含了toString方法(例如:我们建了一个Student类,Student类默认继承了Object所以也就默认有了otString()方法),当我们在输出对象信息(例如打印学生信息)时都会自动调用toString方法。我们要想根据自己的意愿打印,就需要复写otString()方法即可。
   当对象本身没有toString()方法时(例如数组),如果我们直接打印数组,那打印的就只能是数组的首地址了。此时如果想将数组作为字符串的形式返回,那就必须显示调用Arrays里面的toString(T[] t)方法。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
楼上的,你toString()方法都写错了。
System.out.println()方法就是把参数转换成String。


你自己可以去找源码看:
    public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }
回复 使用道具 举报 1 0
4l赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马