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():返回枚举数组. 可以进行遍历枚举.并且输出结果.

 

 

  

  

转载于:https://www.cnblogs.com/iBinary/p/9813925.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux php7 mongodb,CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis

CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis我是想能yum就yum&#xff0c;所有软件的版本一直会升级&#xff0c;注意自己当时的版本是不是已经更新了。首先装CentOS 7装好centos7后默认是不能上网的cd /etc/sysconfig/network-scripts/找到形如ifcfg-enp0s3的文件&#xff…

基于 Bootstrap 的响应式后台管理面板

你想建立一个后台管理面板或者分析仪表板吗&#xff1f;不需从头开始&#xff0c;Keen IO Bootstrap 是一个响应式的仪表盘模板&#xff0c;可以帮助你在几分钟内呈现数据&#xff0c;让你可以创建一个有吸引力的&#xff0c;定制的分析仪表板&#xff0c;随时可以展现给你的团…

sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据

Spark Streaming官方提供Receiver-based和Direct Approach两种方法接入Kafka数据&#xff0c;本文简单介绍两种方式的pyspark实现。1、Spark Streaming接入Kafka方式介绍Spark Streaming 官方提供了两种方式读取Kafka数据&#xff1a;一是Receiver-based Approach。该种读取模式…

时间服务器

时间服务器配置&#xff1a; 1 安装软件包: [rootlocalhost ~]# yum install ntp –y 2 修改配置文件 [rootlocalhost ~]# vim /etc/ntp.conf # 允许内网其他机器同步时间 192.168.1.0该网段 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 允许任何ip的客户机都可以…

使用 HTML5 Canvas 绘制出惊艳的水滴效果

HTML5 在不久前正式成为推荐标准&#xff0c;标志着全新的 Web 时代已经来临。在众多 HTML5 特性中&#xff0c;Canvas 元素用于在网页上绘制图形&#xff0c;该元素标签强大之处在于可以直接在 HTML 上进行图形操作&#xff0c;具有极大的应用价值。 这里分享一个惊艳的 Canva…

mysql 字符串类型 char varchar

字符类型用在存储名字、邮箱地址、家庭住址等描述性数据 char指的是定长字符&#xff0c;varchar指的是变长字符 #官网&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/char.html #注意&#xff1a;char和varchar括号内的参数指的都是字符的长度#char类型&#xff1a;定长…

二叉树遍历规则

树的遍历顺序大体分为三种&#xff1a;前序遍历&#xff08;先根遍历、先序遍历&#xff09;&#xff0c;中序遍历&#xff08;中根遍历&#xff09;&#xff0c;后序遍历&#xff08;后根遍历&#xff09;。 如图所示二叉树&#xff1a; 前序遍历&#xff1a;前序遍历可以记为…

php网页的注册界面设计,HTML开发博客之注册页面设计(一)

CSS文件的引入新建文件reg.html文件首先我们来分析网页布局这是我们页面完成后的效果&#xff0c;网页分为三部分头部&#xff0c;主体&#xff0c;和底部我们按照这个顺序开始编写。头部导航栏的编写html>用户注册页面首页科技资讯心情随笔资源收藏图文图片留言板登陆/注册…

Arctext.js - 基于 CSS3 jQuery 的文本弯曲效果

Arctext.js 是基于 Lettering.js 的文本旋转插件&#xff0c;根据设置的旋转半径准确计算每个字母的旋转弧度并均匀分布。虽然 CSS3 也能够实现字符旋转效果&#xff0c;但是要让安排每个字母都沿着弯曲路径排布相当的复杂&#xff0c;结合 Arctext.js 则可以轻松实现这个效果。…

在JDT中使用Java 8 Lambda

旧 Curmudgeon 认识Smalltalk的Dude 在修改Eclipse Java开发工具 &#xff08;JDT&#xff09;项目正在开发的Java 8支持时&#xff0c;我一直在使用这种语言。 我承认我对Java 8中的lambda有点不满意。 当然&#xff0c;这来自于知道Smalltalk &#xff08;和LISP / Schem…

zabbix邮件告警

zabbix邮件告警调用第三方邮件服务来发送邮件。 [roottiandong ~]# yum install mailx -y 修改配置文件 [roottiandong ~]# vim /etc/mail.rc 67 set from15600857257163.com smtpsmtp.163.com 68 set smtp-auth-user15600857257163.com 69 set smtp-auth-password密码&#xf…

SweetAlert – 替代 Alert 的漂亮的提示效果

Sweet Alert 是一个替代传统的 JavaScript Alert 的漂亮提示效果。SweetAlert 自动居中对齐在页面中央&#xff0c;不管您使用的是台式电脑&#xff0c;手机或平板电脑看起来效果都很棒。另外提供了丰富的自定义配置选择&#xff0c;可以灵活控制。 在线演示 插件下载 您可…

onpagefinished等了很久才执行_今天自律了吗?停课不停锻炼 才是战疫正确姿势

近日&#xff0c;中青校媒面向全国915名高校学生发起关于“宅家运动”情况的调查&#xff0c;发现15.39%被调查者在家期间会严格执行锻炼计划&#xff0c;39.96%选择间歇性完成制订的运动目标&#xff0c;还有44.65%在家很少运动。(3月18日《中国青年报》)新冠肺炎疫情发生&…

Ocrad.js – JS 实现 OCR 光学字符识别

Ocrad.js 相当于是 Ocrad 项目的纯 JavaScript 版本&#xff0c;使用 Emscripten 自动转换。这是一个简单的 OCR &#xff08;光学字符识别&#xff09;程序&#xff0c;可以扫描图像中的文字回文本。 不像 GOCR.js&#xff0c;Ocrad.js 被设计成一个端口&#xff0c;而不是围绕…

Sequence.js 实现带有视差滚动特效的图片滑块

Sequence.js 功能齐全&#xff0c;除了能实现之前分享过的现代的图片滑动效果&#xff0c;还可以融合当前非常流行的视差滚动&#xff08;Parallax Scrolling&#xff09;效果。让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验。…

开源JVM Sampling Profiler

众所周知 &#xff0c;大多数现有的采样Java Profiler都必须在安全的地方进行堆栈跟踪收集。 诸如采样探查器之类的探查器就是这种情况&#xff0c;它使用SUN / Oracle管理代理来收集其堆栈跟踪。 这种方法的问题在于&#xff0c;由于不是程序中的每个点都不是安全点&#xff0…

雷霆战机

前言 多年前&#xff0c;你我在一起"打飞机"。为了实现真正的打飞机&#xff0c;在下一年前踏足帝都学习了无所不能的Python&#xff0c;辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来&#x…

FancyBox - 经典的 jQuery Lightbox 插件

FancyBox 是一款非常优秀的弹窗插件&#xff0c;能够为图片、HTML 内容和其它任务的多媒体内容提供优雅的弹出缩放效果。作为是最流行的 Lightbox 插件之一&#xff0c;可以通过 fitToView 实现自适应功能。主要特色&#xff1a; ✓ 能够显示图片、HTML 元素、SWF 影片、ifra…

php如何表格中的变为超链接,php中将网址转换为超链接的函数

php中将网址转换为超链接的函数复制代码 代码如下:function showtext($text){$search array(|(http://[^ ])|, |(https://[^ ])|, |(www.[^ ])|);$replace array($1, $1, $1);$text preg_replace($search, $replace, $text);return $text;}时间&#xff1a; 2011-08-311.根据…

Java面试参考指南–第1部分

JAVA面向对象的概念 Java基于面向对象的概念&#xff0c;它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化&#xff0c;从而更易于在整个应用程序中重用。 例如椅子&#xff0c;风扇&#xff0c;狗&#xff0c;电脑等。 在Java…