枚举类型

枚举类型

守給你的承諾、 提交于 2020-01-25 00:11:56
enum变量是int类型的,因此在使用int类型的任何地方都可以使用它,比如可以作为数组的下标,可以作为switch的标签 枚举类型的目的是提高程序的可读性。 它的语法和结构相同,但是注意大括号中是逗号,用来分隔常量列表,不是分号,因为结构要声明结构成员的类型,是声明语句,而枚举里面的常量都是int类型的,只需给出常量列表就行了。 意思和联合有点像,一个枚举变量,同一时刻只能取一个枚举列表的值。(和联合完全不一样了。。。扯来联想比较一下把) enum spectrum{ red, orange, yellow, green, blue, violet }; //specturm为标记名,因此可以把enum specturm当作一个类型来使用,花括号里的标识符枚举了enum spectrum类型可能有的值。 //默认时,枚举列表中的常量被指定为整数0,1,2等等 //你也可以选择常量具有的整数值(花括号里面的这些值是常量) //这样声明了以后,blue,red...这些就变成了整型。 printf("%d%d",red,orange); //输出01 enum levels{ low = 100 ,medium = 500, high = 2000}; // 注意仍然是逗号 //如果没有完全赋值 enum feline{ cat, lynx = 10, puma, tiger} /

枚举(Enum)使用总结

六月ゝ 毕业季﹏ 提交于 2020-01-24 20:48:19
2.枚举(Enum)使用总结 发布时间:2010-11-14 上一篇文章: .net 与 javascript脚本的几种交互方法 下一篇文章: 关于在利用FileSystemWatcher进行文件监控产生异常的疑问 Body"> 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等。如果把这些量说明为整型、字符型或其它类型显然是不妥当的。为此,C#提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 1、定义枚举 定义枚举很简单,直接使用enum关键字声明即可,例如定义性别的枚举,性别只有男和女 public enum Sex { 女 = 0,//’0‘是’女‘对应的内部表示,也可以说是女的Value,’女‘是外部表示,也可以说是Name 男 = 1, } 2.使用枚举 代码 1 public void UseEnum() 2 { 3 //获取枚举对应的值 4 int enumValue = (int)Sex.男;//enumValue的值则为 1 5 6 //获取枚举的名称 7 string enumText = Sex.男.ToString();/

十二、背包问题

£可爱£侵袭症+ 提交于 2020-01-24 16:33:56
12.1 0/1 背包问题 12.1.1 题目模型 有 N 件物品和一个容量为 V 的背包。第 i 件物品的体积是 v[i] ,价值是 cost[i] 。求解将哪些物品装入背包可使价值总和最大。 12.1.2 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即 f[i][j] 表示前 i 件物品恰放入一个容量为 j 的背包可以获得的最大价值 。则其状态转移方程便是: f[i][j]=max{f[i-1][j],f[i-1][j-v[i]]+cost[i]} 这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下: “将前 i 件物品放入容量为 j 的背包中”这个子问题,若只考虑第 i 件物品的策略(放或不放),那么就可以转化为一个只牵扯前 i-1 件物品的问题。 如果 不放第 i 件物品 ,那么问题就转化为“前 i-1 件物品放入容量为 j 的背包中”,价值为 f[i-1][j] ; 如果 放第 i 件物品 ,那么问题就转化为“前 i-1 件物品放入剩下的容量为 j-v[i] 的背包中”,此时能获得的最大价值就是 f[i-1][j-v[i]] + cost[i] 。 12.1.3 例题 Description 给定 n 种物品和一个容量为 V 的背包,物品 i 的体积是 \(v_i\)

Java中的枚举类型

好久不见. 提交于 2020-01-23 04:46:13
JDK1.5中新增了枚举类型,可以使用该功能取代以往定义常量的方法,同时枚举类型还赋予程序在编译时进行检查的功能。 一、使用枚举类型设置常量 以为设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为final与static。常规定义常量的示例如下: public interface Constants{ public static final int Constants_A = 1; public static final int Constants_B = 12; } 使用枚举类型定义常量的语法如下: public enum Constants{ Constants_A, Constants_B, Constants_C } 在上述示例中,enum是定义枚举类型关键字,当需要在程序中使用该常量时,可以使用Constants.Constants_A来表示 二、深入了解枚举类型 1、操作枚举类型成员的方法 枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之外,还具有了其它优势。 用户可以将一个枚举类型看作是一个类,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作时枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰

Java 枚举

那年仲夏 提交于 2020-01-22 17:26:59
Java 枚举 目录 Java 枚举   知识点   概念   枚举的方法   枚举的特性   枚举的应用场景   EnumSet和EnumMap Java 枚举 知识点 概念 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 实例的数组

设计模式之单例设计模式

大城市里の小女人 提交于 2020-01-22 17:02:24
单例模式 ,就是只有一个实例对象存在,保证了多线程情况下的线程安全问题。保证一个类仅有一个实例,并提供一个访问它的全局访问点。 创建单例对象的三要素: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 主要应用场景: Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。 一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。 要求生产唯一序列号。 WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。 实现单列模式的关键 : 私有构造方法 单例模式的七种实现方式: 单例模式 主要分为 饿汉式 和 懒汉式 两种 单列模式主要考虑 实例对象唯一 懒加载 性能问题 1、饿汉式 这是饿汉式的简单实现保证了线程安全,但是浪费内存的开销,没有实现懒加载。 package com . multi . thread . two . design . pattern ; /** * 饿汉式:实现步骤 * 1、私有构造方法 * 2、新建实例对象 * 3、对外提供获取对象的全局访问点 * 保证线程安全, *

枚举类型的基本用法

给你一囗甜甜゛ 提交于 2020-01-22 09:01:32
示例: public class EnumTest {   public static void main(String[] args)   {     Size s=Size.SMALL;     //s和t引用同一个对象?     System.out.println(s==t); //     //是原始数据类型吗?     System.out.println(s.getClass().isPrimitive());     //从字符串中转换     Size u=Size.valueOf("SMALL");     System.out.println(s==u); //true     //列出它的所有值     for(Size value:Size.values())     {       System.out.println(value);     }   } } enum Size{SMALL,MEDIUM,LARGE}; 运行结果: 枚举类型基本用法: 1. Size s=Size.SMALL; Size t=Size.LARGE; / 从字符串转换为枚举   在上例可知 s 和 t 没有引用同一个对象。 2. 枚举类型是引用类型,不是原始数据类型。   在上例中将字符串转化成枚举类型后 s 和 t 不是原始数据类型。   ( int 、 float

Java-枚举

我的未来我决定 提交于 2020-01-22 04:45:50
什么是枚举 所谓枚举,是一种特殊的数据,它的取值是有限的,可以枚举出来的,比如说一年就是有四季、一周有七天,虽然使用类也可以处理这种数据,但枚举类型更为简洁、安全和方便。 基本用法 定义和使用基本的枚举是比较简单的,我们来看个例子,为表示衣服的尺寸,我们定义一个枚举类型Size,包括三个尺寸,小/中/大,代码如下: public enum Size { SMALL, MEDIUM, LARGE } 枚举使用enum这个关键字来定义,Size包括三个值,分别表示小、中、大,值一般是大写的字母,多个值之间以逗号分隔。枚举类型可以定义为一个单独的文件,也可以定义在其他类内部。 可以这样使用Size: Size size = Size.MEDIUM Size size声明了一个变量size,它的类型是Size,size=Size.MEDIUM将枚举值MEDIUM赋值给size变量。 枚举变量的toString方法返回其字面值,所有枚举类型也都有一个name()方法,返回值与toString()一样,例如: Size size = Size.SMALL; System.out.println(size.toString()); System.out.println(size.name()); 输出都是SMALL。 枚举的好处 Java是从JDK 5才开始支持枚举的,在此之前

C编写服务程序

梦想的初衷 提交于 2020-01-20 21:50:11
一、问题 1、[SC] OpenSCManager 失败 5:拒绝访问。   以管理员身份运行 2、net start test发生系统错误 2。系统找不到指定的文件。   1)查看exe文件的路径是否正确?最好使用全路径。 若修改服务路径可执行:sc delete 服务名,sc create 服务名 binPath= ""进行重新安装 3、net start serverProgram服务没有响应控制功能。或者提示:错误1053:服务没有及时响应启动或控制请求。   原因:运行作为服务的应用程序不是按服务的流程写的   解决:完成服务程序的代码编写,编译后即可启动服务 二、步骤   1、使用VS创建一个Win32控制台程序   2、编写好服务程序,Build编译好,生成exe文件   3、以管理员身份打开cmd命令窗口,执行:sc create test binPath= 编译成功后的可执行文件的路径     到此就创建了一个服务。窗口提示:[SC] CreateService 成功     注意:"="后一定要空一格,否则会出现错误   4、开始--运行--services.msc->回车,即可查看到刚刚创建的服务 三、sc命令   SC 是用于与服务控制管理器和服务进行通信的命令行程序。 3.1 用法   sc <server> [command] [service name

python枚举的应用enum

霸气de小男生 提交于 2020-01-19 16:55:25
一、介绍 枚举类可以方便地表示星期,月份等常数类型,如果你不用枚举类,那么你只能用数字或者字符串。如果你使用数字,用1-7来表示星期数,但一个数字在程序中不仅可以表示星期数,可能还有其他许多含义,这样你在写程序时就必须时刻记住这些数字的含义,这降低了程序的可读性,也导致容易出错。而当你使用字符串时,虽然没有明显的缺点,但在内存中字符串所占内存要比数字多,这就降低了程序的效率。 枚举类正好弥补了这两方面的缺点,你可以在代码中使用枚举类,但在内存中存放时使用的是数字,既提高了可读性,又提高了程序效率。更重要的是,Python中的枚举类型是不可变类型,又可以进行迭代,这就意味着你可以随时使用枚举类型而不用担心改变了枚举类型的值 二、代码 from enum import Enum, unique #@unique #@unique装饰器可以帮助我们检查保证没有重复值 class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 Say = 6 #假设重复项 print(Weekday.Sun) #枚举类型 print(Weekday['Sun']) #枚举类型 print(Weekday.Sun.name) #枚举名称 print(Weekday.Sun