Discuss / Java / 为什么可以直接打印对象day

为什么可以直接打印对象day

Topic source

廖老师,直接打印对象day为什么会得到星期日,这是什么机制鸭

贴下代码看看啊

因为System.out.println("Today is " + day+ ", work at home!");

相当于System.out.println("Today is " + day.toString() + ", work at home!");

system.out.println本质上调用的是class 的 toString()方法,在class 重写了 toString()方法,所以导致返回的是chinese,也就是第二个参数。

public class Main {
    public static void main(String[] args) {
        Weekday day = Weekday.SUN;
        if (day.dayValue == 6 || day.dayValue == 0) {
            System.out.println("Today is " + day + ". Work at home!");
        } else {
            System.out.println("Today is " + day + ". Work at office!");
        }
    }
}

enum Weekday {
    MON(1, "星期一", "first"), TUE(2, "星期二", "second"), WED(3, "星期三", "third"), THU(4, "星期四", "fourth"), FRI(5, "星期五", "fifth"), SAT(6, "星期六", "sixth"), SUN(0, "星期日", "seventh");

    public final int dayValue;
    private final String chinese;
    private final String english;

    private Weekday(int dayValue, String chinese, String english) {
        this.dayValue = dayValue;
        this.chinese = chinese;
        this.english= english;
    }

    @Override
    public String toString() {
        return this.english;
    }
}

Today is seventh. Work at home!


  • 1

Reply