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;  //属性点不出来,需要反射

    }

}
时间: 2024-10-13 17:04:03

JAVA 枚举的相关文章

java 枚举常用操作

在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { } JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { } public class TrafficLight { public void change() {

Java枚举测试

Java枚举定义 枚举值定义,在构造方法赋值,重写toString(); 测试类 package com.yjm.test; enum TestEnum { ye("yellow"),re("red"),gr("green"); private String str; public String getStr() { return this.str; } public void setStr(String str) { this.str = st

java枚举在android项目应用

今天修复一个公司很早以前的android应用功能,里面的代码逻辑已经完全错乱,然后发现返回的数据完全不对了.然后修复了整整两天.然后我重新整理了一遍,重构就算不上了.然后就用上了枚举. 什么是枚举?我以前也不懂,当时我看见公司的项目中使用了枚举当做项目一个控制,比如修改已经写好的app然后为一些手机厂商做定制版.可能要去掉广告,还有跳转到商店url都不同,特别是国内基本都没有google play.我们为了避免以后的修改,就会写个枚举来控制它. public enum Market { Defa

java枚举小结

在百度百科上是这样介绍枚举的: 在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中,它是一种构造数据类型.枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型. 而在java中,枚举扩大了这一概念,因为在java中,枚举已经称为一个类,因此完全具有类的特性. 我们都知道枚举是JDK1.5才推出的新概念,那么在此之前,我们如果想使用一些固定的常量集合,比如性别(2个),季节(4个),星期(7个)

java 枚举(enum)学习

之前没有用过枚举,不懂.今天找了些资料学习了,现在总结如下:(希望高手看到后批评指教) 枚举的作用: 1.限定某一类型的取值范围. 2.不再写public static final...(如果取值范围太广,就太麻烦了),但最终enum还是要转化成class类型,还是会加public static final... 一段代码说明为什么java要有enum类型: package good.good.study; public class EnumStudy2 { public static void

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam

java枚举的使用

定义枚举 public enum YesOrNo { YES("是") , NO("否") ; private String text ; private int code ; YesOrNo(){ this.text = this.name() ; this.code = this.ordinal() ; } YesOrNo(String text){ this.text = text ; this.code = this.ordinal() ; } YesOrN

java 枚举类型分析

最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, BLUE_BAGE; } 编译不过. 我将赋值语句修改了以后,如下所示: public enum ColorSelect { RED_BAGE , GREEN_BAGE, BLUE_BAGE; } 编译通过.说明C++那样的赋值方法不适用java.所以,我需要弄清楚的是: 1. 在java平台上,如

java枚举怎么用的

package com.pingan.property.icore.pap.common.constants; /** * */public enum UMAuthStatusEnum implements BaseEnumI { // UM验证失败的几种原因 AUTHORIZATION_IS_NULL("0", "header auth信息为空"), UM_API_FAILED("1", "um系统API调用失败"); St

java枚举的定义

package com.sadhu; /** java枚举的定义 枚举中可以定义构造器.方法.字段 所有枚举类都集成了Enum类 */ public class Sample {     public enum Size//定义枚举     {         SMALL("S"),//调用构造器 每个枚举值都要调用构造器         MEDIUM("M"),         LARGE("L"),         EXTRA_LARGE(&