黑马程序员技术交流社区
标题: [已解决]枚举的问题 [打印本页]
作者: 黄克帅 时间: 2012-6-9 12:55
标题: [已解决]枚举的问题
本帖最后由 黄克帅 于 2012-6-11 13:34 编辑
下面为什么会打印7次1111
public class Test {
public static void main(String[] args) {
System.out.println(WeekDay.FIR);
}
public enum WeekDay {
SUM, MON, TUE, WED, THI, FIR, SAT;
private WeekDay() {
System.out.println("1111");
}
private WeekDay(int i) {
System.out.println("2222");
}
}
}
输出结果
1111
1111
1111
1111
1111
1111
1111
FIR
作者: 闾丘日月 时间: 2012-6-9 13:00
SUM, MON, TUE, WED, THI, FIR, SAT
虚拟机在加载进WeekDay类的时候会创建7个这样的WeekDay类型的对象,而调用的构造函数就是无参的,所以会先打印7次1111111
最后打印FIR是因为打印的他的toString方法了
作者: 唐志兵 时间: 2012-6-9 13:46
本帖最后由 唐志兵 于 2012-6-9 13:51 编辑
- public class Test {
- public static void main(String[] args) {
- System.out.println(WeekDay.FIR);
- }
- public enum WeekDay {
- SUM, MON, TUE, WED, THI, FIR, SAT;
- //定义了七个对象,没有定义参数,所以调用无参构造方法,
- //7个对象调用7次,输出7个1111,然后调用 FIR对象的tostring()方法输出 FRI
- private WeekDay() {
- System.out.println("1111");
- }
- private WeekDay(int i) {
- System.out.println("2222");
- }
- }
- }
复制代码
作者: 安路凤 时间: 2012-6-9 14:07
*枚举的定义你再看一下,张老师的高新技术里面详细的讲解了枚举
枚举就是对象,每一个枚举元素都是一个对象
既然是对象的话,你在调用的时候就会对其进行初始化
因为你的枚举元素没有对其设置参数就会调用空参构造函数
- private WeekDay() {
- System.out.println("1111");
- }
复制代码所以会输出七次 1111
最后WeekDay.FIR则默认调用了 toString方法 在枚举里加上这个成员方法你就会发现最后输出的是星期五
- public enum WeekDay
- {
- SUM, MON, TUE, WED, THI, FIR, SAT;
- private WeekDay() {
- System.out.println("1111");
- }
- private WeekDay(int i) {
- System.out.println("2222");
- }
- public String toString()
- {
- return "星期五";
- }
- }
复制代码- public static void main(String[] args) {
- <DIV class=blockcode>System.out.println(WeekDay.FIR);
- }
- }
- </DIV>
复制代码
作者: 何拴绪 时间: 2012-6-9 14:22
在给楼主看一段该进的代码:- public class TestEnum {
- public static void main(String[] args) {
- System.out.println(WeekDay.FIR);// FIR是带参数的,说以会调用带参数的构造方法
- }
- public enum WeekDay {
- SUM(), MON, TUE, WED, THI, FIR(5), SAT;// SUN()和MON都是调用无参数的构造方法,打印还是1111。
- // 这些元素是存放在数组中的,打印也是按上面的顺序打印。
- private WeekDay() {
- System.out.println("1111");
- }
- private WeekDay(int i) {
- System.out.println("i=" + i);
- }
- }
- }
复制代码 打印结果:
1111
1111
1111
1111
1111
i=5
1111
FIR
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |