Java中提供了enum类用以进行枚举。其定义方法以下,每一个枚举类型间使用逗号隔开:java
public enum Color{ RED, BULE, BLACK, GREEN }
在定义了枚举类以后便可在类中使用,其使用方法以下:程序员
public class Flower { public String fName; public Color color; }
在使用类时经过以下方法定义enum变量:算法
Flower flower = new Flower(); flower.color = Color.RED;
在enum类中定义了values方法
用于遍历枚举值,同时可在vlaues方法的返回对象上调用name
和ordinal
方法获取实例的名称和排序值。
以下所示,经过for-each循环进行遍历:数组
for (Color color : Color.values() ) { System.out.printIn("ordianl" + flower.ordinal() + "\t" + flower.name); }
enum枚举值一样能够运用在switch语句中,例如:安全
Flower flower = new Flower(); flower.color = Color.RED; switch (flower.color) { case RED: System.out.printIn("The Color Of The Flower Is Red"; break; case BLUE: System.out.printIn("The Color Of The Flower Is Blue"; break; case BLACK: System.out.printIn("The Color Of The Flower Is Black"; break; case GREEN: System.out.printIn("The Color Of The Flower Is Green"; break; }
JDK1.8定义了java.time包来对时间和日期进行操做。数据结构
Instant对象表示时间线上的一个时间点,经过静态方法now来建立:架构
Instant now = Instant.now();
LocalDate类表示了不带时区的日期。其方法有:
1 getYear() 获取当前日期的年份
2 getMonth() 获取当前日期的月份对象
3 getMonthValue() 获取当前日期是第几月
4 getDayOfWeek() 表示该对象表示的日期是星期几
5 getDayOfMonth() 表示该对象表示的日期是这个月第几天
6 getDayOfYear() 表示该对象表示的日期是今年第几天
7 withYear(int year) 修改当前对象的年份
8 withMonth(int month) 修改当前对象的月份
9 withDayOfMonth(int dayOfMonth) 修改当前对象在当月的日期
10 isLeapYear() 是不是闰年
11 lengthOfMonth() 这个月有多少天
12 lengthOfYear() 该对象表示的年份有多少天(365或者366)
13 plusYears(long yearsToAdd) 相对当前对象增长指定的年份数
14 minusYears(long yearsToSubtract) 相对当前对象减去指定的年数
15 plusMonths(long monthsToAdd) 相对当前对象增长指定的月份数
16 minusMonths(long monthsToSubtract) 相对当前对象减去注定的月数
17 plusWeeks(long weeksToAdd) 相对当前对象增长指定的周数
18 minusWeeks(long weeksToSubtract) 相对当前对象减去指定的周数
19 plusDays(long daysToAdd) 相对当前对象增长指定的天数
20 minusDays(long daysToSubtract) 相对当前对象减去指定的天数
21 compareTo(ChronoLocalDate other) 比较当前对象和other对象在时间上的大小,返回值若是为正,则当前对象时间较晚,
22 isBefore(ChronoLocalDate other) 比较当前对象日期是否在other对象日期以前
23 isAfter(ChronoLocalDate other) 比较当前对象日期是否在other对象日期以后
24 isEqual(ChronoLocalDate other) 比较两个日期对象是否相等
25 now() 返回今天的日期
26 of(int year, int month, int dayOfMonth) 建立指定日期的对象框架
Period类表示了一个基于日期的时间量,经常用于表示日期间的间隔。其方法有:
1 between() 建立两个LocalDate对象之间日期的Period对象
2 of() 建立指定时间的Period对象
3 ofDays() 建立指定天数的Period对象
4 ofWeeks() 建立指定周数的Period对象
5 ofMonths() 建立指定月数的Period对象
6 ofYears() 建立指定年数的Period对象
7 getDays() 获取Period对象的天数
8 getMonths() 获取Period对象的月数
9 getYears() 获取Period对象的年数性能
LocalDateTime类表示一个没有时区的日期和时间。其主要方法和LocalDate类类似,只是增长了对Hours、Minutes、Seconds的操做。学习
ZonedDateTime类表示一个有时区的日期和时间。其主要方法和LocalDateTime类类似,不过增长了getZoned() 方法获取时区。
Duration类表示了一个基于时间的时间段,与Period类类似,不过期间部分精确到了纳秒级,而且考虑到了ZonedDateTimes之间的时区。
DateTimeFormat类提供了format方法来格式化一个本地日期时间或带时区的日期时间。
集合框架是一个用来表明和操纵集合的统一架构。全部的集合框架都包含以下内容:
集合框架被设计成要知足如下几个目标。
1 Collection 接口
2 List 接口
3 Set
4 SortedSet
5 Map
6 Map.Entry
7 SortedMap
8 Enumeration
Java泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制容许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操做的数据类型被指定为一个参数。
定义一个泛型方法,该方法在调用时能够接收不一样类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每个方法调用。
下面是定义泛型方法的规则:
泛型类型的声明和非泛型类的声明相似,除了在类名后面添加了类型参数声明部分。 和泛型方法同样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。由于他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。