乐于分享
好东西不私藏

AI基础学习第二阶段笔记:从0开始学Java“枚举类型”

AI基础学习第二阶段笔记:从0开始学Java“枚举类型”

学习笔记 DAY 42

坚持是一件说起来容易,做起来不容易的事情。


枚举类型

如果一个变量取值只有几种可能的常量时,#可以将它的数据类型定义为枚举类型,其中几种可能的常量是这个枚举类型变量的元素。比如“四季”是一个变量。这个变量的值只可能是春、夏、秋、冬,因此可以把“四季”定义为一个枚举类型的变量,其中春、夏、秋、冬分别是这个枚举变量的枚举元素。

再比如“工作日’是一个变量,这个变量的值只可能是“星期一到星期五”的任意一天,可以将“工作日”这个变量定义为一个枚举类型,其中星期一、星期二、星期三、星期四、星期五分别是这个类型变量的枚举元素。总的来说,枚举类型是由一组固定常量组成的数据类型。下面来具体解读一下如何定义枚举类型。

在Java语言中,#枚举类型使用关键字enum来定义。变量名后面要有大括号枚举元素放在大括号里面,元素之间用逗号间隔。需要注意的是,枚举元素由于是常量,要遵循Java中关于常量的语法规定,比如符号常量要用大写字母表示。

下面的例子便是使用枚举类型来表达一周。

public enum Day{    星期日,星期一,星期二,星期三,星期四,星期五,星期六}

在实际开发过程中,如果遇到以下两种情况,建议大家尽可能地使用枚举类型。

(1) #表示自然规律的变量,例如员工性别、太阳系中的行星等。

(2) #程序在编译时已经知道某个数据所有可能的值,例如菜单、命令行标记等,【例】编写一个程序,演示上述Day的枚举类型的使用。

具体代码如下。

public class DayEnum {    //声明Day枚举类型的变量 day    Day day;    //构造方法,传递一个 Day 类型的参数    publicDayEnum(Day day){    this.day = day;    }    //匹配每一天,并输出感受    publicvoidmatching(){         switch (day){         case 星期一:         System.eut.println("星期一不令人喜欢");         break;         case 星期五:         System.out.println("星期五比较好,有盼头");         break;         case 星期六:         System.out.println("周末令人愉快");         case 星期日:         System.out.println("周末令人愉快");         break;         default:         System.out.println("一周的中间,不好也不坏");         break;    }}publicstaticvoidmain(String[] args){     //创建一个新的对象实例     DayEnum firstDay=new DayEnum(Day.星期一);     firstDay.matching();   //调用其 matching()方法     //创建另一个新的对象实例     DayEnum thirdDay=new DayEnum(Day.星期三):     //创建第三个对象实例     DayEnum fifthDay=new DayEnum(Day.星期五):     fifthDay.matching();     DayEnum sixthDay=new DayEnum(Day.星期六);     sixthDay.matching():     DayEnum seventhDay=new DayEnum(Day.星期日);     seventhDay,matching();     }}

程序运行结果为:

星期一不令人喜欢一周的中间,不好也不坏星期五比较好,有盼头周末令人愉快周末令人愉快

在Java中,在定义的枚举类的类体中可能包括方法和其他成员变量,而且编译器会在创建一个枚举类的同时自动添加一些专门的方法。

迭代一个枚举类型的值通常通过values()方法与for-each结构来实现。例如,如果要迭代一个星期中的每一天,可以使用如下代码。

for(Day day :Day.values()){System.out.println(" 今天是"+ day);}

由于#所有的枚举都隐含地继承自java.lang.Enum,且Java 不支持多重继承,所以一个枚举类型不能继承任何类。

示例中#太阳系中的行星通过一个Planet枚举类型来定义,而且Planet中使用了代表质量和半径的常量属性。

【例】编写一个枚举示例程序,通过输入某人在地球上的体重来计算和输出其在各个行星上的体重。

具体代码如下。

public enum Planet {   水星(3.303e+23,2.4397e6),   金星(4.869e+24,6.0518e6),   地球(5.976e+24,6.37814c6),   火星(6.421e+23.3.3972e6),   木星(1.9e+27.7.1492e7),   土星(5.688e+26:6.0268e7),   天王星(8.686e+25.2.5559e7),   //这里要用分号   海王星(1.024e+26,2.4746e7);   //代表质量,单位为千克   private fnal double quality;   //代表半径,单位为米   private fnal double radius;   //构造方法   Planet(double quality, double radius){         this.quality = quality;         this,radius = radius;   }   //获得质量   privatedoublequality()       return quality;   }   //获得半径   privatedoubleradius(){       return radius;   }   //通用的万有引力常量   public static final double G=6.67300E-11;   //获得地心引力(重力)   doublegravity(){   return G * quality /(radius * radius);   }   //获得地表重量   doubleweight(double otherMass){      return otherMass * gravity();   }   publicstaticvoidmain(Stringf] args){   //如果没有命令行参数,则返回   if (args.length < l){   System.out.println(”请在命令行中输入参数:)      return;   }   double carhWeight = Double.parseDouble(argsf0]).   //通过命令行参数传递地球上的体重   //获取质量大小   double mass = carthWeight/地球.gravity();   //选代输出在每个行星上的体重   for (Planet p :Planet valucs()){   System.out.print(" 你在 %s 上重%f千克 .%n", p. weight(mass)   }}

在运行时要在命令行传递进一个表示地球上的体重的参数。在此输入的是“78”,程序序运行结果为:

你在水星上重9.46094千克,你在金星上重70.589930千克,你在地球上重78.000000千克,你在火星上重29.541500千克,你在木星上重197.383487千克,你在土星上重83.149212千克,你在天王星上重70.599922千克,你在海王星上重88.789590千克,

说明:#枚举类型的构造方法是包级私有的或私有的(private)构造器会自创建枚举一开始定义的常量,程序员不能手动调用枚举的构造方法。

上述代码中除了属性和构造方法外,还定义了一些用来计算每个行星的地心引力和在不同星上的对象的重量的方法。

(从基础背景开始学起,坚持,是一件不容易的事情。)


文章推荐

AI基础学习第二阶段笔记:从0开始学Java“搭建Java程序开发环境”

AI基础学习第二阶段笔记:从0开始学Java“开发第一个Java应用程序”

CMMI 体系培训PPT(一)

CMMI 体系培训PPT(二)

CMMI 体系培训PPT(三)

CMMI 体系培训PPT(四)

CMMI 体系培训PPT(五)

请在微信客户端打开

文 | Lisa Notes

Lisa Notes |一个Lisa’s notes:生活、工作、学习中那些事儿,感悟自我成长,随心随笔杂谈。微信搜索「Lisa Notes」(ID:Lisa-notes),查看更多信息,原创小说,PPT干货分享。

长按♥一键关注

特别声明

本文为自媒体、作者等在微信公众号上传并发布,仅代表作者观点,不代表微信公众号的观点或立场,微信公众号仅提供信息发布平台,最终解释权归本人所有。合作请联系13698281600@163.com。

全世界只有不到0.03%的人

关注小SA

你真是个特别的人

快戳我!快戳我!快戳我!㊋㊋㊋