枚举类型

关于异常一

倾然丶 夕夏残阳落幕 提交于 2019-12-06 10:54:25
我们经常会使用 try/catch/finally 语句块。当然, return 关键字使用也是很平常的事,但是不知道大家有没有注意个这样一个问题。当在 try 语句块里面使用 return 语句,在 finally 里面去修改 return 所要返回的内容会出现什么情况。首先,我们知道 return 是结束方法的标志,一旦方法执行到 return 语句就将返回不再往下执行。其次,我们也知道, finally 里面的语句是无论方法怎样执行,最后都要执行 finally 里面的语句。那么究竟是先执行 return 还是 finally 呢?下面通过两个小实验来解决这个问题。 首先看第一个例子 public class TestTryCatch { public static void main(String[] args){ TestTryCatch test = new TestTryCatch(); System.out.println(test.fun()); } public int fun(){ int i = 10; try{ //doing something return i; }catch(Exception e){ return i; }finally{ i = 20; } } } 输出结果: 10 OK ,很简单的一个例子,创建了一个方法 fun ,在方法里使用

枚举

自作多情 提交于 2019-12-06 10:34:16
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value) value 属性则是自动赋给成员的 int 常量,默认从 1 开始计数。 如果需要更精确地控制枚举类型,可以从 Enum 派生出自定义类: from enum import Enum, unique @unique class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 @unique 装饰器可以帮助我们检查保证没有重复值。 既可以用成员名称引用枚举常量,又可以直接根据value的值获得枚举常量。 来源: https://www.cnblogs.com/FinnChan/p/11978323.html

[JAVA]枚举类型的应用

瘦欲@ 提交于 2019-12-06 10:12:24
本文介绍枚举类的概念和开发过程中枚举的用法。 枚举类使用enum关键字定义,enum默认继承自Enum类,由于java单继承的特点,enum类无法再继承其他父类 一、枚举类的特性 1、简单枚举类的定义 枚举类用关键字enum定义,成员变量之间用逗号分隔,最后一个成员变量用分号结束。枚举类的命名建议加上Enum后缀。 代码如下: public enum FruitEnum { APPLE, ORANGE, BANANA, PEAR } 枚举的成员变量均为常量,可以通过 FruitEnum.APPLE 调用,构造方法被默认强制是私有,禁止通过new关键字实例化。 枚举类自带values()方法可以返回该枚举的所有实例 2、添加自定义方法 枚举类继承自Enum,默认实现了很多常用方法,包括: toString(),compareTo(),equals(),hashCode() 等。 我们也可以给枚举类添加自定义方法,需要注意如下几点: 1、自定义方法必须在enum实例之后; 2、如果显示指明了构造方法,必须是默认(enum中默认既是私有)或私有 3、最后一个实例需要加分号 例如,给简单示例增加要给重写的toString()方法: public enum FruitEnum { APPLE, ORANGE, BANANA, PEAR; @Override public String

莫比乌斯反演学习笔记2

倖福魔咒の 提交于 2019-12-06 08:40:44
前置知识:莫比乌斯反演学习笔记1 本文介绍一些莫比乌斯反演的灵活应用,包括杜教筛等内容。 一、整除分块(数论分块) 补充一点基础知识... 具体来说就是:如果我们要求 \(\sum \limits_{i=1}^n\lfloor\frac{n}{i}\rfloor\) ,并不需要用朴素算法 \(O(n)\) 去求,可以加快速度。 定理1:所有 \(1 \leq i \leq n\) 的 \(\lfloor\frac{n}{i}\rfloor\) 的结果最多只有 \(2\sqrt n\) 种。 证明:对于 \(i \in [1,\sqrt n]\) ,显然最多只有 \(\sqrt n\) 种取值,而对于 \(i \in [\sqrt n+1,n]\) , \(\lfloor\frac{n}{i}\rfloor\leq\sqrt n\) ,因此也最多有 \(\sqrt n\) 种取值,两个部分相加,因此最多有 \(2\sqrt n\) 种取值。 定理2:对于确定的 \(i\) ,能使得 \(\lfloor\frac{n}{x}\rfloor=\lfloor\frac{n}{i}\rfloor\) 的 \(x_{max}=\Big\lfloor\cfrac{n}{\lfloor\frac{n}{i}\rfloor}\Big\rfloor\) 。 这里选取了两种证明方法。 证法1:记 \(f

C#学习笔记05--枚举/结构体

不羁的心 提交于 2019-12-06 07:41:13
一.枚举 当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便 1.1.定义: 访问修饰符 enum 枚举类型名 { 成员1, 成员2, 成员3, ... } public enum Days { Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun } enum: 是枚举的关键字; Days 枚举类型名; Mon, Tue, Wed,...是枚举成员变量 枚举类型赋值只能是成员变量; 枚举的默认值是从0开始的, 可以人为改变 以下个会在上一个的基础上默认加1; 1.2.枚举的使用 语法格式: 枚举类型 枚举变量名 = 枚举类型.枚举值: Days date = Days.Sun; Console.WriteLine(date); // Sun 如果想要得到 成员变量对应的数字 可以进行一个强制类型转换 Console.WriteLine((int)date); // 7 注意: 当给枚举变量赋值时, 其值只能通过枚举类型名加点运算符, 从定义的枚举类型后面的{}里面选取, 故枚举类型限制了枚举变量的取值, 因此在编程过程中, 使用枚举类型可以让我们的数据保持统一. 系统会给枚举值赋一个默认的int类型的值, 第一个枚举值是0, 后面的枚举值所对应的int 值依次加1; 故枚举类型本质上也是个int类型的值, 可以在int

Java 之 枚举(Enum)

自作多情 提交于 2019-12-06 02:27:50
一、枚举   1、概述     枚举:JDK1.5引入的,类似于穷举,一一罗列出来     Java 枚举:把某个类型的对象,全部列出来   2、应用      什么情况下会用到枚举类型?     当某个类型的对象是固定的,有限的几个,那么就可以选择使用枚举。     在整个系统的运行期间,有且只有这几个对象。     例如: 性别类:只有两个对象:男,女         季节类:有4个对象:春、夏、秋、冬 二、JDK1.5之前,实现枚举效果   1、需要把构造器私有化:        目的:在这个类的外面,无法随意的创建对象   2、在本类中,提前创建好对象,供别人使用    Demo: 1 public class TestEnum { 2 public static void main(String[] args) { 3 //Gender g1 = new Gender(); 构造器私有化,无法使用 4 5 Gender nan1 = Gender.NAN; 6 Gender nan2 = Gender.NAN; 7 System.out.println(nan1 == nan2);//true 8 } 9 } 10 class Gender{ 11 //public:使得外面可以直接访问 12 //static:使得可以使用“类名.”访问 13 //final

Effective Java:善于使用枚举(enum)和注解(annotation)

雨燕双飞 提交于 2019-12-06 02:26:26
30 用enum代替int常量 编写程序的时候更加安全和方便。 vlaueOf(String): 它将常量名字转变成枚举本身。 ordinal(): 返回枚举在数字中的位置。 一个enum用的十分好的例子: 太阳系8个行星中,每颗行星都有其质量和半径,通过这两个属性可以计算出它的表面重力。以下是行星的枚举: public enum Planet{ MERCURY( 3.32e+23 , 2.439e6 ), VENUS ( 4.869e+24 , 6.052e6 ), ... EARTEH ( 5.975e+24 , 6.378e6 ); private static final double G = 6.678E-11 ; private final doiuble mass; private final doiuble radius; rpivate final doiiuble surfaceGravite; Planet( double mass, doiuble radius){ this .mass = mass; this .radius = radius; } public double surfaceWeight ( double mass){ //计算方法 } //getter方法 } 下面这个程序,可以漂亮的打印出,一个物体在各大行星的重量: public

JAVA enum 枚举类型(2017-07-18)

你说的曾经没有我的故事 提交于 2019-12-06 02:25:59
最近把JAVA书拿过来又看了一遍。看到这个枚举类型。 不过因为工作中,很少用到这个枚举类型,即使需要定义常量,大多数也是用public static fianl。。。 最近看到,我去网上查阅了一番资料,看了一些博主写的文章,结合这些资料,和我自己测试结果,来粗浅的记录下自己的心得。 说道枚举,就不得不说关键词: enum ; 下面来说一下 enum 的几个需要我们了解的点: 1、 enum 定义的类型是一个类,这些类都集成Enum类,即继承:java.lang.Enum类。既然继承了Enum,那么显而易见,就继承了Enum的很多方法。 2、 enum 定义是一个final类,是不可再次被继承。 enum 定义的类里的常量都是final的静态常量。 3、 enum 定义的类 中有构造器、方法、和数据域。但是枚举的构造器与一般普通类有些区别: ①构造器只在构造枚举值时被调用。 ②构造器中只能私有private,决不能有public构造器。 JAVA枚举分为三个案例来讲: 案例一:普通JAVA类中定义package test.ENum类; 案例代码: package test.ENum; public class ColorEnumTest { public enum ColorTest{ RED,GREEN,BLANK } public static void main(String[

Java枚举类型(enum)-6

扶醉桌前 提交于 2019-12-06 02:25:04
EnumSet EnumSet是与枚举类型一起使用的专用 Set 集合,EnumSet 中所有元素都必须是枚举类型。与其他Set接口的实现类HashSet/TreeSet(内部都是用对应的HashMap/TreeMap实现的)不同的是,EnumSet在内部实现是位向量(稍后分析),它是一种极为高效的位运算操作,由于直接存储和操作都是bit,因此EnumSet空间和时间性能都十分可观,足以媲美传统上基于 int 的“位标志”的运算,重要的是我们可像操作set集合一般来操作位运算,这样使用代码更简单易懂同时又具备类型安全的优势。注意EnumSet不允许使用 null 元素。试图插入 null 元素将抛出 NullPointerException,但试图测试判断是否存在null 元素或移除 null 元素则不会抛出异常,与大多数collection 实现一样,EnumSet不是线程安全的,因此在多线程环境下应该注意数据同步问题,ok~,下面先来简单看看EnumSet的使用方式。 EnumSet用法 创建EnumSet并不能使用new关键字,因为它是个抽象类,而应该使用其提供的静态工厂方法,EnumSet的静态工厂方法比较多,如下: 创建一个具有指定元素类型的空EnumSet。 EnumSet<E> noneOf(Class<E> elementType) /

子域名枚举艺术深度剖析

扶醉桌前 提交于 2019-12-06 02:23:08
子域名枚举是信息收集中关键的一步,细节很大程度决定战果。本文参考 The Art of Subdomain Enumeration ,加上实践运用进行总结。 被动枚举 一、证书透明度 证书 当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。 证书透明度 证书透明度(Certificate Transparency)简称CT,主要用于将证书记录到公开的 CT log 中,日志可以被任何人浏览。 通过CT log搜索 https://crt.sh/ https://censys.io/ https://developers.facebook.com/tools/ct/ https://google.com/transparencyreport/https/ct/ 利用 crt.sh ,一行代码收集子域名,代码是从国外漏洞赏金猎人那里拷贝的,更多 one line ,后面持续更新。 curl -fsSL -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "https://crt.sh/?CN=%25.github.com" | sort