8月11日枚举
枚举类型(JDK5 5.0):
<1>Enum关键字,一种特殊的数据类型
<2>和类差不多:包含有变量和方法,可以实现接口
<3>特征:
(1)不能包含public修饰的构造函数
(2)枚举不能被实例化
(3)枚举项需放在最顶端,枚举项的值默认被public static final修饰
(4)enum默认实现了Java.lang.comparable接口
(5)enum可对进行toString()重写
(6)每个自定义枚举类型都提供了valueOf(String argName)方法,与toString()相关
(7)enum提供了values()方法
(8)enum的枚举项提供了 oridinal()方法查找枚举项的下标位置
(9)如果枚举项未显示提供toString()方法,则在枚举中找toString()方法
(10)枚举项的方法和变量不能用static修饰,且不能被枚举项外围访问到
(11)枚举中的方法若要被外围访问,则需要static有修饰
(12)可以定义在类内部,或单独形成一个枚举类型
--->什么情况下使用枚举,使用枚举的意义
作业:选则颜色,
用户输入数字(>10),或者输入任意字符(即产生随机数)
由枚举类中的getColor()和getColor(int i)方法产生对应的枚举项
package cn.com.test;
import java.util.Scanner;
public class EnumColor {
enum Colors{
红,橙,黄,绿,青,蓝{
private String name;
public String toString(){
return "blue";
}
},紫{
public String toString(){
return "pink";
}
};
String
Colors(){
System.out.println("枚举的无参构造函数");
}
Colors(){
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
}
}
package cn.com.test;
import java.util.Scanner;
public class Example{
/*
* 定义
*/
enum Sex {
mail("I am a man"){
private String name;
public String getName(){
return"";
}
public String toString(){
return "man";
}
},femail; //不要引号,枚举项必须在顶端
public static String value;
public static void getValue(){
System.out.println(value);
}
Sex(){ //枚举的构造函数不能用public修饰
// mail = femail; //枚举项的值默认被public static final修饰
System.out.println("枚举Sex的无参构造函数");
}
Sex(String argValue){
Sex.value = argValue;
System.out.println("枚举Sex的有参构造函数");
}
public String toString(){
return "枚举中的toString()方法";
}
}
public static void main(String[] args){
// Scanner input = new Scanner(System.in);
System.out.println(Sex.mail.toString());//是有枚举项继承Object的,而不是有枚举本身继承的
System.out.println(Sex.valueOf("mail"));//借助字面值搜索枚举项
System.out.println(Sex.valueOf("femail"));
// System.out.println(Sex.valueOf("jgd"));
// System.out.println(Sex.values());
//values()方法,用于遍历枚举项的
// Sex[] sexes = Sex.values();
//ordinal()方法,用于打印下标值
// for(Sex s:sexes){
// System.out.println(s + " " + s.ordinal());
// }
// System.out.println("请输入性别");
// String sex = input.next();
// String sexValue = null;
// if(sex.equals("mail")){
// sexValue = Sex.mail;
// }
//每调用一次,都会调用一次构造函数
// if(Sex.mail.compareTo(Sex.femail) == 0){
// System.out.println("true");
// }else{
// System.out.println("false");
// }
// System.out.println(sex);
}
}