• 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;  //属性点不出来,需要反射
            
        }
    
    }
  • 相关阅读:
    Intellij idea使用过程中遇到的一些问题
    微信小程序云函数Windows下安装wx-server-sdk
    计算文件MD5的方法
    IntelliJ IDEA取消自动import所有import *
    在IntelliJ IDEA中使用VIM
    STS启动时卡在loading加载 dashboard.ui
    NoSuchMethodError
    BeanUtils.copyProperties和PropertyUtils.copyProperties的使用区别
    一致性哈希算法介绍
    Maven修改本地仓库路径
  • 原文地址:https://www.cnblogs.com/lingtiaoti/p/6224201.html
Copyright © 2020-2023  润新知