您的位置:首页 > 文旅 > 旅游 > 哈尔滨短视频制作公司_中国建设银行app下载安卓版_刷赞业务推广网站_济南网站优化排名

哈尔滨短视频制作公司_中国建设银行app下载安卓版_刷赞业务推广网站_济南网站优化排名

2024/12/23 16:38:16 来源:https://blog.csdn.net/YZL40514131/article/details/143481057  浏览:    关键词:哈尔滨短视频制作公司_中国建设银行app下载安卓版_刷赞业务推广网站_济南网站优化排名
哈尔滨短视频制作公司_中国建设银行app下载安卓版_刷赞业务推广网站_济南网站优化排名

在这里插入图片描述


Java面向对象编程高级-枚举类(四)

  • 一、概述
  • 二、JDK5.0和JDK5.0之前如何定义枚举类
    • 1、JDK5.0之前代码演示
    • 2、JDK5.0代码演示(常用)
  • 三、练习

一、概述

枚举类型本质上也是一种类,只不过是这个类的对象是有限的、固定的几个,不能让用户随意创建。
枚举类的例子举不胜举:

星期: Monday(星期-)…Sunday(星期天)
性别:Man(男)、Woman(女)
月份:January(1月)…December(12月)
季节:Spring(春节)…Winter(冬天)
三原色:red(红色)、green(绿色)、blue(蓝色)
支付方式:Cash(现金)、WechatPay(微信)、Alipay(支付宝)、BankCard(银行卡)
就职状态:Busy(忙碌)、Free(空闲)、Vocation(休假)、Dimission(离职)
线程状态:创建、就绪、运行、阻塞、死亡

2、开发中的建议
开发中如果针对于某个类,其实例是确定个数的,则推荐将此类声明为枚举类。
如果枚举类中的实例只有1个,可以看作是单例的实现方式。

二、JDK5.0和JDK5.0之前如何定义枚举类

1、JDK5.0之前代码演示

package com._enum;public class SeasonTest {public static void main(String[] args) {System.out.println(Season.SUMMER);}
}class Season {//2、声明实例变量  使用private final 修饰private final String Name;private final String Desc;//1、私有化类的构造器private Season(String Name, String Desc) {this.Name = Name;this.Desc = Desc;}//3、提供实例变量的get方法public String getName() {return Name;}public String getDesc() {return Desc;}//创建实例对象  使用public static final  修饰public static final Season SPRING = new Season("春天", "春暖花开");public static final Season SUMMER = new Season("夏天", "夏日炎炎");public static final Season AUTOMN = new Season("秋天", "硕果累累");public static final Season WINTER = new Season("冬天", "白雪皑皑");@Overridepublic String toString() {return "Season{" +"Name='" + Name + '\'' +", Desc='" + Desc + '\'' +'}';}
}

2、JDK5.0代码演示(常用)

Enum中常用方法
使用enum关键字定义的枚举类,默认其父类是java.lang.Enum类
使用enum关键字定义的枚举类,不要再显示的定义其父类,否则会报错。

String tostring():默认返回的是常量名(对象名),可以继续手动重写该方法
static 枚举类型[] values():返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值,是一个静态方法
static 枚举类型 valueOf(string name):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象
String name():得到当前枚举常量的名称。建议优先使用tostring()。
int ordinal():返回当前枚举常量的次序号,默认从0开始

package com._enum;public class SeasonTest1 {public static void main(String[] args) {System.out.println(Searon1.SPRING.getName());System.out.println(Searon1.SPRING);System.out.println(Searon1.SPRING.name());Searon1[] values = Searon1.values();for (int i = 0; i < values.length; i++) {System.out.println(values[i]);}//4、.valueOf(objName);返回当前枚举类中名称为objName的枚举类对象//如果枚举类中不存在ibjName则报错String objName = "WINTER";Searon1 searon1 = Searon1.valueOf(objName);System.out.println(searon1);}
}//jdk5.0 使用enum关键字定义枚举类
enum Searon1 {//1、必须在枚举类的开始声明多个对象,对象之间使用,隔开SPRING("春天", "春暖花开"),SUMMER("夏天", "夏日炎炎"),AUTOMN("秋天", "硕果累累"),WINTER("冬天", "白雪皑皑");//2、声明实例变量  使用private final 修饰private final String Name;private final String Desc;//3、私有化类的构造器private Searon1(String Name, String Desc) {this.Name = Name;this.Desc = Desc;}//3、提供实例变量的get方法public String getName() {return Name;}public String getDesc() {return Desc;}@Overridepublic String toString() {return "Searon1{" +"Name='" + Name + '\'' +", Desc='" + Desc + '\'' +'}';}
}

三、练习

案例1

package com._enum.apply;public class Employee {private String name;private int age;private Status status;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 Status getStatus() {return status;}public void setStatus(Status status) {this.status = status;}public Employee() {}public Employee(String name, int age, Status status) {this.name = name;this.age = age;this.status = status;}@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", age=" + age +", status=" + status +'}';}
}
package com._enum.apply;public enum Status {BUSY, FREE, VOCATION, DIMISSION;
}
package com._enum.apply;public class EmployeeTest {public static void main(String[] args) {Employee e1 = new Employee("tom",21,Status.BUSY);System.out.println(e1);}}Employee{name='tom', age=21, status=BUSY}

案例2:颜色枚举类Color(使用enum声明)
1、声明颜色牧举类:7个常量对象:RED,ORANGE,YELLOW,GREEN,CYAN, BLUE,PURPLE;
2、在测试类中,使用枚举类,获取绿色对象,并打印对象。

public enum Color {REB, ORANGE, YELLOW, GREEN, CYAN, BLUE, PURPLE;
}

案例拓展:颜色枚举类(使用enum声明)

(1)声明颜色枚举类Color:

声明final修饰的int类型的属性red,green,blue
声明final修饰的String类型的属性description
声明有参构造器Color(int red,int green,int blue,String description)
创建7个常量对象:红、橙、黄、绿、青、蓝、紫,
重写tostring方法,例如:RED(255,0,0)->红色

(2)在测试类中,使用枚举类,获取绿色对象,并打印对象、
提示:

7个常量对象的RGB值如下:
红:(255,0,0)
橙:(255,128,0)
黄:(255,255,0)
绿:(日,255,0)
青:(0,255,255)
蓝:(0,0,255)
茶:(128,0 255)

package com._enum;/*** package:com._enum** @Author jimmy-yan* @Create 2024/11/4 14:05*/
public class ColorTest {public static void main(String[] args) {System.out.println(Color.GREEN);}
}enum Color {RED(255, 0, 0, "红色"),YELLOW(255, 0, 0, "黄色"),GREEN(0, 255, 0, "绿色"),BLUE(255, 0, 0, "蓝色");private final int red;private final int green;private final int blue;private final String desc;public int getRed() {return red;}public int getGreen() {return green;}public int getBlue() {return blue;}public String getDesc() {return desc;}Color(int red, int green, int blue, String desc) {this.red = red;this.green = green;this.blue = blue;this.desc = desc;}@Overridepublic String toString() {return name()+"("+red+","+green+","+blue+")->"+desc;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com