JAVA 枚举

1、枚举:由一组固定的常量组成的类型,是计算机的数据类型。

2、枚举的定义 public enum Gender{

                                         男,女;//这里的分号可以省略不写

                   //枚举中的值都是静态常量,所以使用的时候,可以用类名.常量值引用 ;不允许手动添加public static final

                   }

 注意:public static final s="男",这是错误的。

 1>枚举不是类,枚举是一种数据类型

 2>枚举中可以有属性和方法,还可以有构造方法,但是构造方法必须是私有的,用private修饰,可以省略这个修饰符,如/*private*/ Gender(){}

   3>枚举中的常量值不能是基本的数据类型,例如public enum Gender{1,2,3,4,5,6;} 这是错误的

3、将字符串转枚举

    (1)Gender g = Enum.valueOf(Gender.class, str)

            str:String类型的变量         String的值必须是枚举类型的常量值,要不然就报错了IllegalArgumentException(非法的参数)

            Gender.class:反射

            valueOf:将什么类型转成什么什么类型

4、将枚举转字符串

    (1) g.toString()    g代表的是枚举类型,.toString()转成字符串类型

//枚举

public enum Gender {//枚举不是类,但是枚举是一种数据类型
    男,女;//这里的分号可以省略不写,枚举中的值都是静态常量!但是不允许手动的添加 public static final
//    public static final s="男";//这是错的
    
    String name ="张三";//属性
    
    public static void show(){
        System.out.println("枚举中的show方法");
    }
    
    /*private */Gender(){//构造方法可以有,但是必须是私有的,而且可以不写这个修饰!
        
        
    }
    
}
//Person类
public class Person {
    private String name;
    private int age;
    private Gender sex;
    
    public Person() {
        // TODO Auto-generated constructor stub
    }

    public Person(String name, int age, Gender sex) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Gender getSex() {
        return sex;
    }

    public void setSex(Gender sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }
    
}
/**
 * switch的枚举例子
 * 在jdk1.5把这个switch语句中的表达式加入了枚举类型[int  char]
 * 
 * 
 */
public class TestGender {
    public static void main(String[] args) {
        Gender g =Gender.男;
//        g.show();
        switch(g){
        case 女:
            System.out.println("女的");
            break;
        case 男:
            System.out.println("男的");
             break;
        }
    }
}
//类型转换,例如:字符串转枚举;枚举转字符串

public class TestPerson {
    public static void main(String[] args) {
        //枚举中的值都是静态的常量,所以使用的时候: 类型名.常量值
        Person p =new Person("金星",45,Gender.女);//枚举的使用
        System.out.println(p);
        //将字符串转枚举,String的值必须是枚举类型的常量值,要不然就报错了IllegalArgumentException(非法的参数)
        String str ="男";
        Gender g = Enum.valueOf(Gender.class, str);//Gender.class反射 
        System.out.println(g);
        
        String str2="123";
        int in = Integer.valueOf(str2);
        System.out.println(in);
        
        String str3="3.14";
        double d = Double.valueOf(str3);
        System.out.println(d);
        //小结:将String 转各种数据类型使用统一的valueOf(String s)方法
        
        //把枚举转成字符串
        System.out.println(g.toString());
        
        
        Gender.show();
//        Gender.name;  //属性点不出来,需要反射
        
    }

}

 

posted @ 2016-12-26 22:25  梦浍烈风灵  阅读(370)  评论(0编辑  收藏  举报