枚举类型

Java集合类: Set、List、Map、Queue使用

自作多情 提交于 2020-03-29 20:23:20
目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。 集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供了一些多线程支持的集合类。 在学习Java中的集合类的API、编程原理的时候,我们一定要明白,"集合"是一个很古老的数学概念,它远远早于Java的出现。从数学概念的角度来理解集合能帮助我们更好的理解编程中什么时候该使用什么类型的集合类。 Java容器类类库的用途是"保存对象",并将其划分为两个不同的概念: 1) Collection 一组"对立"的元素,通常这些元素都服从某种规则   1.1) List必须保持元素特定的顺序   1.2) Set不能有重复元素   1.3) Queue保持一个队列(先进先出)的顺序 2) Map 一组成对的

iOS 指纹识别常见问题汇总

末鹿安然 提交于 2020-03-29 05:23:15
作者 年小羊 关注 转发: http://www.jianshu.com/p/d44b7d85e0a6 最近公司的 app 要使用指纹支付了;总体来说还是蛮顺利的;但是中间有遇到一些坑;下面就对坑进行汇总; 一.基本知识 点开这个 LocalAuthentication.framework ,发现里面主要有这么几个东西 LocalAuthentication.framework - LAContext.h - LAError.h - LAPublicDefines.h - LocalAuthentication.h LocalAuthentication.h 这个没什么可讲的吧,代码就两行,一行导入 LAContext.h ,一行导入 LAError.h ,这个 LocalAuthentication 类是暴露出来方便开发者调用的类。 LAPublicDefines.h 先从简单的开始讲吧,首先是 LAPublicDefines.h ,从名字上来看是公共宏定义类,里面包含了许多定义好的宏,这些宏会在 LAContext.h 得到使用。 // // LAPublicDefines.h // LocalAuthentication // // Copyright (c) 2014 Apple. All rights reserved. // #ifndef

MySQL数据类型与优化

泄露秘密 提交于 2020-03-26 21:20:15
原创itcats_cn 最后发布于2019-11-07 22:07:01 阅读数 713 收藏 展开 关于数据类型的优化 1、假如只需要存0~255之间的数,无负数,应使用tinyint unsigned(保证最小数据类型) 2、如果长度不可定,如varchar,应该选择一个你认为不会超过范围的最小类型 比如: varchar(20),可以存20个中文、英文、符号,不要无脑使用varchar(150) 3、整形比字符操作代价更低。比如应该使用MySQL内建的类型(date/time/datetime)而不是字符串来存储日期和时间 4、应该使用整形存储IP地址,而不是字符串 5、尽量避免使用NULL,通常情况下最好指定列为NOT NULL,除非真的要存储NULL值 6、DATETIME和TIMESTAMP列都可以存储相同类型的数据:时间和日期,且精确到秒。然而TIMESTAMP只使用DATETIME一半的内存空间,并且会根据时区变化,具有特殊的自动更新能力。另一方面,TIMESTAMP允许的时间范围要小得多,有时候它的特殊能力会变成障碍 整数类型 1、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT分别使用8(-127~127或0~255)、16(0~65535)、24(0~1600万)、32、64位存储空间。 2、整数类型有可选的UNSIGNED属性

.NET枚举类型优化探讨(三)

筅森魡賤 提交于 2020-03-25 11:57:48
在 .NET枚举类型优化探讨(二) 中我们探讨了“使用类或结构来替代部分枚举类型”的方案并试图进行进一步的重构和优化,但是发现有很多限制,不但没有完成重构,且发现了很多该方案不适用的地方和缺陷。在某些情况下,这种方案会对生产带来相反的作用,所以在文中我建议不要滥用。今天我们来探讨一下使用.NET中的 Attribute特性 来扩展.NET枚举值的方案。 前面我们提到,.NET中的枚举类型的成员定义约束是很严格的,只能在里面增删字段,而不能定义方法、属性等高级成员。当枚举类型与单个数值常量绑定的时候,只需要在字段后面使用“=”赋值即可,但是如果我们需要绑定非数值常量或想绑定更多的信息时该怎么办呢? 在编写本文之前,我综合网上现有的资料,大概总结了一下,有如下方案可供参考: 如果想绑定1条中文常量,那么字段直接声明为中文就可以了。理由是:.NET支持Unicode编码,而且该方案不需要任何额外的编码; 可以使用 Dictionary<,> 字典类。理由是:反正枚举值都是唯一的,可以作为键,而中文常量可以作为值,而且是泛型,效率高; 还是方案2,只不过当需要绑定多个常量的时候,可以考虑将键值的中文替换为一个自定义对象; 使用 Attribute特性 来扩展,但缺点是需要反射; 前三种方案都很简单,网上也有其他朋友提供的资料,今天我们只讨论最后一种。这里要牵扯到一些概念

枚举enum

半城伤御伤魂 提交于 2020-03-24 16:22:00
枚举值:它是一个整形(int) 并且,它不参加内存的占用和释放 枚举定义变量即可直接使用,不用初始化. 枚举的定义如下: 方式一: typedef enum{ //在这个地方,可以定义相同的名称,给要用到的类型起个标识符,这个地方,是可以省略的 unknown, //大括号里面的内容,依据程序员的需要来填充,使用逗号隔开,最后一个可以不使用符号,默认的序号是从0开始的,最好在标记时给它赋值=0 //如果在中途给它定义了数字,比如unknown=7,则以后的字符的序号依次递增,iPad=8 iPad, iPhone }TYPES;//枚举的名称,并且使用分号来结束 方式二: enum 名称{ 枚举数据表 }; enum type{ }; 补充:2015年07月25日 //---------------------------------------------------------------------------------- 1、枚举的定义写在哪里? 答:跟在 #import “”后面写,写在类的前面,确保枚举的作用范围 方式三: 1)亦可以如下定义(推荐:结构比较清晰): 格式:typedef NS_ENUM(NSInteger, 名称){}; typedef NS_ENUM(NSInteger, Test1) { //以下是枚举成员 Test1A = 0, Test1B

让JAD反编译工具我发现了很多有意思的程序

≯℡__Kan透↙ 提交于 2020-03-24 11:46:41
本文参考原文- http://bjbsair.com/2020-03-22/tech-info/5702/ jad反编译工具,已经不再更新,且只支持JDK1.4,但并不影响其强大的功能。 基本用法:jad xxx.class,会生成直接可读的xxx.jad文件。 自动拆装箱 对于基本类型和包装类型之间的转换,通过xxxValue()和valueOf()两个方法完成自动拆装箱,使用jad进行反编译可以看到该过程: public class Demo { public static void main(String[] args) { int x = new Integer(10); // 自动拆箱 Integer y = x; // 自动装箱 } } 反编译后结果: public class Demo { public Demo(){} public static void main(String args[]) { int i = (new Integer(10)).intValue(); // intValue()拆箱 Integer integer = Integer.valueOf(i); // valueOf()装箱 } } foreach语法糖 在遍历迭代时可以foreach语法糖,对于数组类型直接转换成for循环: // 原始代码 int[] arr = {1, 2,

枚举类

你说的曾经没有我的故事 提交于 2020-03-23 16:14:37
一、枚举类的使用 枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 /** * * 自定义枚举类 * */ public class test01 { public static void main(String[] args) { Season spring = Season.SPRING; System.out.println(spring); } } //自定义枚举类 class Season{ //1.声明Season对象的属性:private final修饰 private final String seasonName; private final String seasonDesc; //2.私有化类的构造器,并给对象属性赋值 private Season(String seasonName, String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.提供当前枚举类的多个对象:public static final的 public static final Season SPRING =

【C#】C#语法基础---转

耗尽温柔 提交于 2020-03-22 16:42:57
一,注释语句 /*注释语句包含在"反斜杠* "和" *反斜杠"中, 或者两个反斜杠和换行符之中, 或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取) 要注意注释中的\,该续行符会把下一行连上来一起注释掉出错。*/ static void Main(string[] args)   {//语句块包含在{}中     int MyInterger;//语句以;结束     string MyString;///忽略空白字符(空格/回车/TAB)     MyInterger = 17;   } //要注意防止注释嵌套出错,可用#if,#endif预处理语句。 二,数据类型 1,基本型/内置型 用户自定义型 A,内置类型:CS使用.net FrameWork ? 库中的数据类型 sbyte = System.SByte,... 类型 字节数 解释 byte 1 无符号字节型 sbyte 1 有符号字节型 short 2 有符号短字节型 ushort 2 无符号短字节型 int 4 有符号整型 uint 4 无符号整型 long 8 有符号长整型 ulong 8 无符号长整型 float 4 浮点数 double 8 双精度数 decimal 8 固定精度数 string ? unicode字串型 char ? unicode字符型 bool ? 真假布尔型/

对象的扩展

£可爱£侵袭症+ 提交于 2020-03-22 01:18:32
本文为学习笔记; 原文链接 <<<<转载请注明原文出处! 对象( object )是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo}; 上面代码表明: ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。 下面是另一个例子。 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 除了属性简写,方法也可以简写。 const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } }; 下面是一个实际的例子。 let birth = '2000/01/01'; const Person = { name: '张三', /

Java enum应用小结

為{幸葍}努か 提交于 2020-03-21 06:45:24
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。 public enum Code { SUCCESS(10000,"操作成功"),FAIL(10001,"操作失败"); private int code; private String msg; private Code(int code, String msg) { this.code = code; this.msg = msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String