枚举类型

24-特殊数据类型

不问归期 提交于 2019-11-28 17:50:45
枚举类 在Java中,我们可以通过static final来定义常量,无论是int常量还是String常量,使用这些常量来表示一组枚举值的时候,有一个严重的问题就是,编译器无法检查每个值的合理性。为了让编译器能自动检查某个值在枚举的集合内,并且,不同用途的枚举需要不同的类型来标记,不能混用,我们可以使用enum来定义枚举类。 public class Main { public static void main(String[] args) { Weekday day = Weekday.SUN; if (day == Weekday.SAT || day == Weekday.SUN) { System.out.println("Work at home!"); } else { System.out.println("Work at office!"); } } } enum Weekday { SUN, MON, TUE, WED, THU, FRI, SAT; } 定义枚举类是通过关键字enum实现的,只需依次列出枚举的常量名。 和int定义的常量相比,enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,而且不同类型的枚举不能互相比较或者赋值,也不可能引用到非枚举的值。 enum的比较

11.枚举类型

血红的双手。 提交于 2019-11-28 16:23:00
定义:枚举类型是一种可以由用户自定义数据集的数据类型。 注意:bool类型可以看成是C++语言提供的一个预定义的枚举类型。 1. 枚举类型定义 enum <枚举类型名> {<枚举值表>}; 2. 初始化 枚举类型的每一个枚举值都对应一个整型数,默认情况下,第一个枚举值的值是0,然后依次增1,但也可以显示初始化任意一个枚举值对应的整形数,没定义的枚举值默认情况下在其前一个枚举值的对应整型数上加1. enum Day {Sun=7, MON=1, TUE, WED, THU, FRI, SAT} 3. 枚举变量的定义 <枚举类型> <变量表>; 或<枚举类型>{<枚举值表>} <变量表>; 4. 枚举变量的使用 1)赋值 Day d1,d2; d1 = SUN; //true d2 = 3; //error, 但int n = SUN;也是可以的 d2 = (Day)3;//true 但这样不安全,必须要保证该整型数属于枚举类型的值集,否则没有意义 2)比较运算 MON < TUE的结果为true,运算时将其转换为整型 3)算术运算 d2 = d1 + 1;//error,因为它d1 + 1的结果是整型 d2 = (Day)(d1 + 1);//true 4)其他 输入输出:可以输入int数,使用switch,然后复制或者输出 类下标访问:day(0)对应的是第一个枚举值sun 来源:

挑战10个最难的Java面试题(附答案)【上】

怎甘沉沦 提交于 2019-11-28 14:32:55
这是收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,而且包括我的朋友和同事在内的许多程序员都觉得很难回答。 1 为什么等待和通知是在 Object 类而不是 Thread 中声明的? 一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手的 Java 核心方面的面试问题。 为什么 wait,notify 和 notifyAll 是在 Object 类中定义的而不是在 Thread 类中定义 这是有名的 Java 面试问题,招2~4年经验的到高级 Java 开发人员面试都可能碰到。这个问题的好在它能反映了面试者对等待通知机制的了解, 以及他对此主题的理解是否明确。就像为什么 Java 中不支持多继承或者为什么 String 在 Java 中是 final 的问题一样,这个问题也可能有多个答案。 为什么在 Object 类中定义 wait 和 notify 方法,每个人都能说出一些理由。从我的面试经验来看, wait 和 nofity 仍然是大多数Java 程序员最困惑的,特别是2到3年的开发人员

Java 枚举

僤鯓⒐⒋嵵緔 提交于 2019-11-28 12:43:45
知识点 概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: enum Color { RED, GREEN, BLUE } 如果枚举不添加任何方法, 枚举值默认为从0开始的有序数值 。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2 。 枚举的好处 :可以将常量组织起来,统一进行管理。 枚举的典型应用场景 :错误码、状态机等。 枚举类型的本质 尽管 enum 看起来像是一种新的数据类型,事实上, enum是一种受限制的类,并且具有自己的方法 。 创建enum时,编译器会为你生成一个相关的类,这个类继承自 java.lang.Enum 。 java.lang.Enum 类声明 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { ... } 枚举的方法 在enum中,提供了一些基本方法: values() :返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序。 name() :返回实例名。 ordinal() :返回实例声明时的次序,从0开始。 getDeclaringClass()

C#枚举相关用法

五迷三道 提交于 2019-11-28 12:34:16
什么是枚举?   枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 定义枚举 : public enum Direction { [Description("东")] East, [Description("南")] South, [Description("西")] West, [Description("北")] North } 默认枚举的int值从零开始,枚举的下一项int值会自动累加上一个枚举项的值。例如:East = 1,则South=2, West=3,以此类推。。。 或East = 4,则South=5, West=7,North=8。。。 获取枚举的int值: var eastNumber = (int)Direction.East; // eastNumber = 0; 获取枚举字符串: var eastString = Direction.East.ToString(); // eastString= "East"; int转枚举: var east = (Direction)0; // east = Direction.East string转枚举: const string strEnum = "East"; // ignoreCase: true/false (是否忽略大小写

java枚举

*爱你&永不变心* 提交于 2019-11-28 11:30:38
1、为何使用Java枚举 Java5之前没有enum的情况下,我们一般使用几个int常量表示枚举值(int枚举类型)或者string枚举类型 public static final ZOO_CAT=1 #表示小猫 public static final ZOO_CAT=2 #表示小狗 作为方法参数zooType是int类型 如 public void printZoo(int zooType){ } 这样的话 我们调用方法只要是int类型就行 ,没法控制方法调用的 安全性 其次 作为一个数字 如果打印到日志是个裸数字没有 可读性 为此 java5 产生了enum 固定且有限的类型都可以使用enum。 2、如何使用java枚举 package com.yangfei.test.meiju; public class EnumYf { enum ZOO{ CAT,DOG,PIG } public static void printZoo(ZOO zooType){ System.out.println("my name is " + zooType); } public static void main(String[] args){ printZoo(ZOO.DOG); } } View Code 如上 一个简单的例子 EnumYf中定义了一个动作枚举类型。 当一个枚举是公共的分类时

SQLmap检测sql注入漏洞

杀马特。学长 韩版系。学妹 提交于 2019-11-28 11:15:13
(1).SQL概念   所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。例:12306.cn和csdn等网站帐号和密码的泄露,都有可能是sql注入导致的。 (2).SQLmap    SQLmap是一款用来检测与利用 SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。官网: http://sqlmap.org/ (3).实验环境 youxi1  192.168.1.6  SQLmap youxi2  192.168.1.7  渗透测试演练系统DVWA (4).youxi1上安装SQLmap   安装python [root@youxi1 ~]# yum -y install python [root@youxi1 ~]# python -V Python 2.7.5   然后将下载好的SQLmap源码包上传,并解压运行. [root@youxi1 ~]# cd /usr/local/ [root@youxi1

12.typescript-枚举

做~自己de王妃 提交于 2019-11-28 09:55:38
我怎么可以对你着了魔~ <----------------------------------------☺mizhiweixiao☺----------------------------------------> 1.用途和定义 (1)枚举用来限定取值在一定范围内的场景,比如一周有七天等。 (2)使用枚举可以定义一些有名字的常量。 (3)枚举使用关键字 enum 来定义 2.简单例子 1 enum Students{"weizeyang","weizexu","weixinyao","lizhihao"}; 2 3 console.log(Students["weizeyang"]); // 0 4 console.log(Students["lizhihao"]); // 3 从上面的栗子可以看出枚举值默认从0开始,依次递增。 同时枚举值和枚举名可以进行反向映射 1 enum Students{"weizeyang","weizexu","weixinyao","lizhihao"}; 2 3 console.log(Students[0]); // weizeyang 4 console.log(Students[3]); // lizhihao 在js文件中上面的栗子会被编译成 1 (function (Students) { 2 Students[Students[

TypeScript之枚举

你。 提交于 2019-11-28 09:55:01
什么是枚举类型,有什么作用? 枚举类型就是一个用来组织一些有相似之处的常量的对象,作用就是管理常量,让常量更规范,统一。例: enum Direction { Up = 1, Down, Left, Right } 使用时直接用“.”的方式使用: Direction.Up、Direction.Down ... 枚举类型的特点: 1.手动赋值时从第一个开始自动赋值0,后来依次+1, 2.未手动赋值的项只能在第一个,或只能在赋值为数字的项的后面, 3枚举的键值对会被翻转声明(反向映射) 存疑: 联合枚举与枚举成员的类型 官方文档 enum ShapeKind { Circle, Square, } interface Circle { kind: ShapeKind.Circle; radius: number; } interface Square { kind: ShapeKind.Square; sideLength: number; } let c: Circle = { kind: ShapeKind.Square,  // 这里写任何数字都能通过编译,why // ~~~~~~~~~~~~~~~~ Error! radius: 100, } 来源: https://www.cnblogs.com/superjsman/p/11806878.html

理解枚举替代实现的缺陷

允我心安 提交于 2019-11-28 08:11:27
Python3.4以前并不提供枚举类型,于是人们利用Python的动态性这个特征,想出了枚举的各种替代实现方式。 使用类属性 class Seasons : Spring , Summer , Autumn , Winter = range ( 4 ) print ( Seasons . Summer ) # 1 借助函数 def enum ( * args , ** kwargs ) : return type ( "Enum" , ( object , ) , dict ( zip ( args , range ( len ( args ) ) ) , ** kwargs ) ) Seasons = enum ( "Spring" , "Summer" , "Autumn" , "Winter" ) print ( Seasons . Summer ) # 1 使用 collections.namedtuple from collections import namedtuple Seasons = namedtuple ( 'Seasons' , 'Spring Summer Autumn Winter' ) . _make ( range ( 4 ) ) print ( Seasons . Summer ) # 1 显然,这些替代实现有其不合理的地方。 允许枚举值重复