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

JAVA学习

枚举

Java中提供了enum类用以进行枚举。其定义方法如下,每个枚举类型间使用逗号隔开:

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的等)。

泛型类型

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

posted @ 2019-03-24 22:01  20189205黄铸君  阅读(230)  评论(0编辑  收藏  举报