-------------------------------
1 利用枚举有助于减少代码中的bug。因为你可以固定某个变量的值在哪些指中取。
例:enum CoffeeSize{BIG,HUGE,OVERWHELMING};
2 枚举可以在自己的类中声明,也可以在另外一个类中,而访问枚举成员的方法很依赖于枚举声明的位置,记住,不可以在方法内部声明枚举。
3 每个枚举的值其实都是枚举类型的一个实例,拿上面的例子来说,BIG,HUGE,OVERWHELMING分别为CoffeeSize的一个实例。
4 每个枚举的值都知道自己的索引或位置。因为,枚举值的顺序是在声明时就已经决定的,可以将CoffeeSize枚举看作是存在于CofffeeSize类型的数组中。
5 可以为枚举添加构造函数,实例变量,方法,并且每个枚举都有一个静态方法values(),它以声明枚举时的顺序返回这些值的一个数组。
6 枚举的构造函数可以被重写。(有兴趣可进一步研究,呵呵)
例:
1 | public class TestEnum { CoffeeSize coffsize; public static void main(String[] arg){ TestEnum te1=new TestEnum(); te1.coffsize=CoffeeSize.BIG; System.out.println(te1.coffsize.getOunces()); TestEnum te2=new TestEnum(); te2.coffsize=CoffeeSize.BIG; TestEnum te3=new TestEnum(); te3.coffsize=CoffeeSize.BIG; CoffeeSize[] values=CoffeeSize.values(); for(int i=0;i<values.length;i++){ CoffeeSize cs=values[i]; System.out.println("name:"+cs.name()+" ounces:"+cs.getOunces()); } } } enum CoffeeSize{ BIG(8),HUGE(10),OVERWHELMING(16); private int ounces; CoffeeSize(int ounces){ this.ounces=ounces; } public int getOunces(){ return this.ounces; } };//end enum |
-----------------------------还有几句话要说,哈哈
再说几句:
1 局部变量的生命周期从方法内开始。当方法完成时,局部变量也会被销毁。
2 局部变量总是位于栈上,而不是堆上。
3 不存在栈对象,只有栈变量。
4 合法并不意味值合适 。
5 在声明中包含数组大小永远是不合法的。
6 记住:只有在真正实例化对象时,JVM才会分配空间。因此,实例化是才涉及到数组的大小问题。>