Java开发知识之Java的枚举
Java开发知识之Java的枚举
一丶什么是枚举
枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字.
枚举跟C++概念都是一样的.就是特定的常量而已.
二丶Java中的枚举
java中的常量.一般都是final定义.但是我们讲过.final定义的常量.初始化的时候可以每次给不同的值.
所以加上static 才能保证其内存不会改变.一般常量都是定义在接口中给我们使用的.
可能需要连续定义.
例如:
public final static int a = 1;
public final static int b = 2;
public final static int c = 3;
....
枚举就是管理一组常量的一个结构而已.
据图语法如下:
权限修饰符 enum关键字 枚举名称{
枚举常量,
枚举常量,
枚举常量
}
枚举常量的定义
枚举名称 常量;
具体使用如下代码:
类代码:
public class MyTestenum {
public MyTestenum() {
// TODO 自动生成的构造函数存根
}
public enum NUMBER{
N_NUMBER1,
N_NUMBER2,
N_NUMBER3
}
}
外部new对象.并且使用enum定义常量.
public static void main(String[] args) throws MyException {
MyTestenum t = new MyTestenum();
NUMBER n = NUMBER.N_NUMBER1; //定义枚举常量n,必须初始化,可以为null也可以是枚举中的常量.
switch(n) {
case N_NUMBER1:
System.out.println("1");
break;
case N_NUMBER2:
System.out.println("2");
break;
case N_NUMBER3:
System.out.println("3");
break;
}
}
可以看到.我们可以直接使用 枚举 定义枚举变量. 并且赋值其中一个枚举常量.
但是我们又有疑问了. 我们的枚举常量并没有初始化.但是为什么程序不出错.而且还打印了1;
原因是. 枚举常量.默认就是从0开始.
三丶枚举作为方法传递
我们可以定义枚举常量.规定只接受什么类型的枚举.
public class MyTestenum {
public MyTestenum() {
// TODO 自动生成的构造函数存根
}
enum NUMBER{
N_NUMBER1 ,
N_NUMBER2 ,
N_NUMBER3
}
public static void doit(NUMBER c) {
switch(c) {
case N_NUMBER1:
break;
case N_NUMBER2:
break;
case N_NUMBER3:
break;
}
}
}
使用:
public static void main(String[] args) throws MyException {
MyTestenum.doit(NUMBER.N_NUMBER1);
}
我们要传入枚举常量才可以.
四丶枚举的高级用法
我们知道.JAVA是一个面向对象的程序. 我们定义的枚举.其实已经默认继承了一个类
枚举类型可以看做一个类,其中的成员也都被默认使用 final public static 修饰了.所以枚举名称(变量)
其实就是一个引用.他继承了父类.则有父类的方法可以使用.
常用方法;

代码举例以values()为例.遍历枚举成员
public static void main(String[] args) throws MyException {
MyTestenum.doit(NUMBER.N_NUMBER1);
NUMBER n = null;
for(int i = 0; i < n.values().length;i++) {
System.out.print(" " + n.values()[i]);
}
}

使用方法返回了一个数组. 又使用链式方法.调用了 length求数组成员. 下面则进行遍历.
五丶知识总结
1.定义枚举关键字
enum 名称{成员,成员};
1.枚举定义的成员. 默认都是 public static final 修饰的. 其成员是一个常量.且内存不可以更改.
2.枚举方法.
枚举可以当参数传递给方法使用.
3.枚举高级用法
枚举可以看成一个类.他的成员都是它的实例. 它集成子java.lang.Enum类. 我们可以使用方法进行遍历.
例如values():返回枚举数组. 可以进行遍历枚举.并且输出结果.
Java开发知识之Java的枚举的更多相关文章
- Java开发知识之Java编程基础
Java开发知识之Java编程基础 一丶Java的基础语法 每个语言都有自己的语法规范.例如C++ 入口点是main. 我们按照特定格式编写即可. Java也不例外. Java程序的语法规范就是 Ja ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- Java开发知识之Java的异常处理
Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- Java开发知识之Java的数字处理类Math类
Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...
随机推荐
- [开源]使用C# 对CPU卡基本操作封装
Github 地址:https://github.com/zifeiniu/CPUCardLib 项目需求及简介: 公司要求将用户相关的信息储存到射频卡中,之前项目使用的Mifare类型卡,只储存了用 ...
- SpringBoot整合多数据源实现
项目架构 1.导入相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
- [微信跳转链接]之WAP浏览器跳转微信指定页面,微信跳转链接
今天在一个小说的链接上看到最后,点击一个[继续阅读按钮]居然唤起微信APP,在微信内打开一个二维码,长按识别后可关注微信公众号, 后来分析出:weixin://dl/business/?ticket= ...
- VB生成条形码(EAN-13)
14年给别人写的一个库存软件,用到扫码枪,所以就有了这个类. 编码规则相对简单,详见百度百科EAN-13 示例运行效果如下: 类模块:cEAN13.cls Option Explicit '★━┳━━ ...
- 将欢迎消息添加到PeopleSoft主页--登录事件
以下是如何为PeopleSoft应用程序设置Signon事件消息. 导航到PeopleTools>实用程序>管理> SignOn事件消息 在此页面上,您将看到当前处于活动状态或过去处 ...
- java编程目录
目录结构 java常用数据类型使用 https://www.cnblogs.com/cerofang/p/10250535.html java中的排序 https://www.cnblogs.com ...
- Server的API如何设计才满足RESTful要求?
Server的API如何设计才满足RESTful要求? 首先是简洁版里面的那几点.外加一些附带的 best practices:1. URL root: https://example.org/api ...
- 初入linux系统
作为微软的老铁粉了,看到微软进军linux这么久了,是时候该跟上脚本了,不然该落后了,脚步是如此之快,着实让我吃了一惊,说干就干, 绝不是开玩笑的,谁也阻止不了.net开源,跨平台的脚步了.以前别人说 ...
- 【类与对象】--------java基础学习第六天
类与对象 1. 对于面向对象的开发来讲也分为三个过程: OOA(面向对象分析) OOD(面向对象设计) OOP(面向对象编程) 2. 面向对象的基本特征 2.1. 封装:保护内部操作(属性,方法)不被 ...
- C++初步 2
对象数组: Coordinate coord[3]; 栈区 Coordinate *p=new Coordinate[3]; 堆区 /* * Coordinate.h * ...