日期:2014-05-20  浏览次数:20640 次

有关Enum枚举问题
enum

------解决方案--------------------
第一个输出中p并不在堆中分配,它有一个具体的值,那就是MAN,所以输出MAN。
第二个是一个对象,它在堆内存中分配,用System.out.println(p1)时,就是调用object类的toString()方法,所以会出现cn.it.pag.P@10948cf;如果有P类中重写了toString(),你怎么写,它就怎么输出。
------解决方案--------------------
第一个输出调用的是Person的toString,第二个调用的是Object的toString。


引用:
Person.MAN 是一个对象不?


Person.MAN是Person类型的对象。
------解决方案--------------------
引用:
第一个输出中p并不在堆中分配,它有一个具体的值,那就是MAN,所以输出MAN。
第二个是一个对象,它在堆内存中分配,用System.out.println(p1)时,就是调用object类的toString()方法,所以会出现cn.it.pag.P@10948cf;如果有P类中重写了toString(),你怎么写,它就怎么输出。

p是Person类型的对象,输出“MAN”是因为调用了java.lang.Enum类的toString()方法(enum关键字声明的枚举类都继承了java.lang.Enum),具体可以查看java.lang.Enum的toString()方法