2018-2019-2 20189205《移动平台应用开发实践》第四周做业

JAVA学习

枚举

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方法的返回对象上调用nameordinal方法获取实例的名称和排序值。
以下所示,经过for-each循环进行遍历:数组

for (Color color : Color.values() ) {
    System.out.printIn("ordianl" + flower.ordinal() + "\t" + flower.name);
}

switch

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类

Instant对象表示时间线上的一个时间点,经过静态方法now来建立:架构

Instant now = Instant.now();

LocalDate类

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类

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类

LocalDateTime类表示一个没有时区的日期和时间。其主要方法和LocalDate类类似,只是增长了对HoursMinutesSeconds的操做。学习

ZonedDateTime类

ZonedDateTime类表示一个有时区的日期和时间。其主要方法和LocalDateTime类类似,不过增长了getZoned() 方法获取时区。

Duration类

Duration类表示了一个基于时间的时间段,与Period类类似,不过期间部分精确到了纳秒级,而且考虑到了ZonedDateTimes之间的时区。

DateTimeFormat类

DateTimeFormat类提供了format方法来格式化一个本地日期时间或带时区的日期时间。

集合框架

集合框架是一个用来表明和操纵集合的统一架构。全部的集合框架都包含以下内容:

  • 接口:是表明集合的抽象数据类型。例如 Collection、List、Set、Map 等。之因此定义多个接口,是为了以不一样的方式操做集合对象
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是由于相同的方法能够在类似的接口上有着不一样的实现。
    除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,可是它们彻底整合在集合中。

集合框架被设计成要知足如下几个目标。

  • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
  • 该框架容许不一样类型的集合,以相似的方式工做,具备高度的互操做性。
  • 对一个集合的扩展和适应必须是简单的。
    为此,整个集合框架就围绕一组标准接口而设计,能够直接使用这些接口的标准实现。集合框架定义了以下接口:

1 Collection 接口

  • Collection 是最基本的集合接口,一个 Collection 表明一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
  • Collection 接口存储一组不惟一,无序的对象。

2 List 接口

  • List接口是一个有序的 Collection,使用此接口可以精确的控制每一个元素插入的位置,可以经过索引(元素在List中位置,相似于数组的下标)来访问List中的元素,第一个元素的索引为 0,并且容许有相同的元素。
  • List 接口存储一组不惟一,有序(插入顺序)的对象。

3 Set

  • Set 具备与 Collection 彻底同样的接口,只是行为上不一样,Set 不保存重复的元素。
  • Set 接口存储一组惟一,无序的对象。

4 SortedSet

  • 继承于Set保存有序的集合。

5 Map

  • Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

6 Map.Entry

  • 描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。

7 SortedMap

  • 继承于 Map,使 Key 保持在升序排列。

8 Enumeration

  • 这是一个传统的接口和定义的方法,经过它能够枚举(一次得到一个)对象集合中的元素。这个传统接口已被迭代器取代。

泛型

Java泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制容许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操做的数据类型被指定为一个参数。

泛型方法

定义一个泛型方法,该方法在调用时能够接收不一样类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每个方法调用。
下面是定义泛型方法的规则:

  • 全部泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型以前(在下面例子中的 )。
  • 每个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
  • 类型参数能被用来声明返回值类型,而且能做为泛型方法获得的实际参数类型的占位符。
  • 泛型方法体的声明和其余方法同样。注意类型参数只能表明引用型类型,不能是原始类型(像int,double,char的等)。

泛型类型

泛型类型的声明和非泛型类的声明相似,除了在类名后面添加了类型参数声明部分。 和泛型方法同样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。由于他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。

相关文章
相关标签/搜索