枚举类型,它是字段包含固定数量的常量的类型。常见的例子,罗盘的方向包括东西南北,还有星期的天。

因为他们是常量,所有枚举类型的字段的名字一般是大写字母。

java编程语言,声明一个枚举类型使用enum关键字。例如,你要指定一整个星期的天的枚举类型是:

public enumDay {

SUNDAY, MONDAY, TUESDAY, WEDNESDAY,

THURSDAY, FRIDAY, SATURDAY

}

应该在需要使用固定组常量的任何时候使用枚举类型。这包括自然枚举类型,例如银河系的行星,这些你可以在编译时知道任何可能值。例如,菜单选择,命令行标志等。

这里有一些介绍如何使用Day枚举类型声明的代码,如下:

public classEnumTest {

Day day;publicEnumTest(Day day) {this.day =day;

}public voidtellItLikeItIs() {switch(day) {caseMONDAY:

System.out.println("Mondays are bad.");break;caseFRIDAY:

System.out.println("Fridays are better.");break;case SATURDAY: caseSUNDAY:

System.out.println("Weekends are best.");break;default:

System.out.println("Midweek days are so-so.");break;

}

}public static voidmain(String[] args) {

EnumTest firstDay= newEnumTest(Day.MONDAY);

firstDay.tellItLikeItIs();

EnumTest thirdDay= newEnumTest(Day.WEDNESDAY);

thirdDay.tellItLikeItIs();

EnumTest fifthDay= newEnumTest(Day.FRIDAY);

fifthDay.tellItLikeItIs();

EnumTest sixthDay= newEnumTest(Day.SATURDAY);

sixthDay.tellItLikeItIs();

EnumTest seventhDay= newEnumTest(Day.SUNDAY);

seventhDay.tellItLikeItIs();

}

}

输出是:

Mondays are bad.

Midweek days are so-so.

Fridays are better.

Weekends are best.

Weekends are best.

java编程语言枚举类型比其他编程语言更加强大。enum声明,定义了类(称为enum类型)。枚举类体,可以包含方法和其他字段。编译器为enum自动添加特殊的方法。例如,有一个静态的values方法,返回一个按照声明顺序排列的enum值数组。这个方法通常结合for-each结构,遍历enum类型的所有值。例如,下面Planet类里的代码,演示了遍历银河系的所有行星。

for(Planet p : Planet.values()) {

System.out.printf("Your weight on %s is %f%n",

p, p.surfaceWeight(mass));

}

注意:所有enum类隐式继承java.lang.Enum。由于java不支持多继承,所有enum也不能继承其他类。

下面的例子中,Planet是一个枚举类型,代表银河系里的所有行星。他们是恒定的质量和半径属性定义。

每个枚举常量都有质量和半径参数的声明。这些值,通过构造方法,在常量初始化时传递进来。java要求常量首先定义,其次才是字段和方法。所以,在字段和方法之前,enum常量列表必须以分号(;)结束。

注意:enum类型的构造方法必须是包内私有或者是private访问。它自动创建在enum体内的开始创建声明的常量,不允许直接调用enum的构造方法。

对于它的属性和构造方法,行星上有方法,使您可以检索你在每个行星的表面引力和重量。下面是一个示例程序,根据你在地球的体重(任何单位),计算,并打印你在所有的行星的体重(在同一个单位):

public enumPlanet {

MERCURY (3.303e+23, 2.4397e6),

VENUS (4.869e+24, 6.0518e6),

EARTH (5.976e+24, 6.37814e6),

MARS (6.421e+23, 3.3972e6),

JUPITER (1.9e+27, 7.1492e7),

SATURN (5.688e+26, 6.0268e7),

URANUS (8.686e+25, 2.5559e7),

NEPTUNE (1.024e+26, 2.4746e7);private final double mass; //in kilograms

private final double radius; //in meters

Planet(double mass, doubleradius) {this.mass =mass;this.radius =radius;

}private double mass() { returnmass; }private double radius() { returnradius; }//universal gravitational constant (m3 kg-1 s-2)

public static final double G = 6.67300E-11;doublesurfaceGravity() {return G * mass / (radius *radius);

}double surfaceWeight(doubleotherMass) {return otherMass *surfaceGravity();

}public static voidmain(String[] args) {if (args.length != 1) {

System.err.println("Usage: java Planet ");

System.exit(-1);

}double earthWeight = Double.parseDouble(args[0]);double mass = earthWeight/EARTH.surfaceGravity();for(Planet p : Planet.values())

System.out.printf("Your weight on %s is %f%n",

p, p.surfaceWeight(mass));

}

}

如果在命令行运行Planet.class,参数是175,输出是:

$ java Planet 175Your weight on MERCURY is66.107583Your weight on VENUS is158.374842Your weight on EARTH is175.000000Your weight on MARS is66.279007Your weight on JUPITER is442.847567Your weight on SATURN is186.552719Your weight on URANUS is158.397260Your weight on NEPTUNE is199.207413

java 枚举类型_java 枚举类型(翻译自Java Tutorials)相关推荐

  1. java枚举类型转换_java枚举类型enum值与整数的转换

    java编程中偶尔会用到枚举,为了直观,我们通常将枚举值设置为形象的单词,方便理解和使用.枚举类型相当于数据库 中字典表,但是枚举只有字典表的值,缺少其他用来表示和值一一对应的字段,当我们在数据库中保 ...

  2. java枚举数字_Java枚举类型的使用,数值的二进制表示

    一.Java枚举类型的使用 首先请看这段代码: packagejava上课;public classEnumTest {public static voidmain(String[] args) { ...

  3. java枚举数字_Java 枚举 通过数字实例化枚举类型

    package com.zjl.domain.enumtype; /** * 枚举类 * * @Author zjl * @Date 2018/06/27 */ public enum EnumTyp ...

  4. ef 在此上下文中只支持基本类型或枚举类型_Java枚举不应该成为你成功路上得绊脚石,源码给你讲解清楚

    现在在面试的过程中,基础得东西占的比重越来越高,尤其是对于Java底层得一些东西,比方说今天得内容---枚举,单纯说这些知识点其实并不难,甚至在日常得工作中用到的都不算多,但是,在面试的过程中会问到你 ...

  5. java注释类型_Java 8类型注释

    java注释类型 Lambda表达式是迄今为止Java 8讨论最多和最受促进的功能.虽然我同意Lambda是一个很大的改进,但我认为其他一些Java 8功能由于Lambda的炒作而有所欠缺. 在这篇文 ...

  6. java输入枚举型_Java 枚举型为什么是静态的,以及是怎么实现的?

    确实,枚举类型总让我们觉着怪怪的,无论是语法还是静态非静态,还是操作方法,总让人觉着它和数组.列表等格格不入.那到底是为什么呢? 我们从本质分析下java的枚举类型. 1 枚举类型初探 枚举类型,其语 ...

  7. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  8. java enum 变量_java枚举使用详解

    package com.ljq.test; /** * 枚举用法详解 * * @author jiqinlin * */ public class TestEnum { /** * 普通枚举 * * ...

  9. java注解类型_Java注解类型

    本篇文章帮大家学习java注解类型,包含了Java注解类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 标记注解类型 标记注解类型是没有元素的注解类型,甚至没有默认值. ...

最新文章

  1. Java中BigDecimal工具类(支持空值运算版)
  2. 清理多个varnish服务器缓存的脚本
  3. AndroidStudio基础视频教程-整理
  4. 大规模部署桌面虚拟化时的问题
  5. JavaScript —从回调到异步/等待
  6. sqlserver调用mysql存储过程_sqlserver调用存储过程
  7. html title 不显示_SEO入门教程二:学习最基础的html代码知识
  8. 怎样快速学习shell语言
  9. 【多媒体封装格式详解】---MKV【1】
  10. 适合 Java 新手的开源项目集合——在 GitHub 学编程
  11. 数学建模线性规划实例及详细解答(MATLAB代码)
  12. win10计算器_好用的Win10系统计算器,终于可以在移动端设备上面来用了
  13. 【前端】vue阶段案例:组件化-房源展示
  14. 专科计算机专业取消,教育部公布已撤销了这些大学专业!有你的专业吗
  15. Linux 操作系统 之 虚拟内存
  16. C#中Validating和Validated事件
  17. fbp是什么岗位_BP是什么职位?
  18. 头条白板面试_我收到的最佳白板面试建议
  19. 电商平台数据仓库搭建01-项目介绍
  20. 计算广告小窥[下]要啥自行车!

热门文章

  1. Piper蛋窝「2020.10.19-2020.10.25」本周更新内容の大预告!
  2. 【编译原理笔记09】语法制导翻译:语法制导翻译方案,在非递归的预测分析过程中进行翻译
  3. java corsa_JAVA CORSA休闲车,缔造“城市 生活 元素”
  4. linux 创建目录和删除目录
  5. mini车f和r的区别_雪铁龙也造出了“老头乐”,外观复古时尚,叫板宏光MINI?...
  6. linux阻止程序,Linux:阻止某些应用程序/主机名的IPv6
  7. 暴力 ZOJ 1403 Safecracker
  8. How to add svn:externals in windows using TortoiseSVN
  9. [HNOI2002]营业额统计 Splay tree入门题
  10. 基于发起源判断CSRF***的方法