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; //属性点不出来,需要反射 } }
时间: 2024-10-13 17:04:03