课本学习
十二章 枚举
1 enum方法:为字段发法穿件一组有效值
packge app12;
public enum CoustomType{
INDIVIDUAL,
ORGANIZATION
}
package app2;/*可以像使用一个静态类一样使用enum常量*/
public class Coustomer{
public Sring customerName;
public CustomerType customerName;
public string addresss;
}
在保证变量被赋给一个有效值的方面,enum比静态final要好。
static final 和enum区别
Enum(枚举):
public enum Color {
RED(1),
BLUE(1),
GREEN(1),
BLACK(1);
private int a ;
private Color(int a){this.a=a}
}
1、用途:用于表示一组相同类型的常量
2、与普通 public static final 常量比较
public static final RED=1;
public static final BLUE=2;
public static final BLACK=3;
相比上面的常量,枚举就有更加直观的功能描述
一般的switch是不能用string进行比较的,但是有时候我们的参数又是string类型的,因为switch可以支持普通类型和枚举enum型的参数
所以我们可以用string的参数来建立一个enum类进行判断。
public enum A {
B("DAD"),
C("DADA"),
D("DAD"),
E("A");
private String a ;
private Color(string a){this.a=a}
}
switch(Transformation(“dada”)){
case B:
break;
case C:
break;
}
transformation方法:
public A Transformation(string value){
for(A a:EnumSet.allof(A.class)){
if(a.toString.equals(value)){
return a;
}
return null;
}
}
Final:
1、final类
作用:类不可以被继承,在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
2、final方法
作用:
1、把方法锁定,防止任何继承类修改它的意义和实现
2、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率
3、如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法
3、final变量
用final修饰的成员变量表示常量,值一旦给定就无法改变!
Static:
1、static变量:
static修饰的成员变量和成员方法独立于该类的任何对象,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们,因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
2、static代码块:
static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块
3、static方法:
静态方法中不能用this和super关键字(静态方法是属于类的,静态方法加载时,对象还不一定存在,this和super代表是分别是对象的引用和对象父类的引用),static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
2 定义一个enum类时,enum具有如下属性
- 没有公有构造函数
- 隐式是静态的
- 每个enum常量只有一个实例
- 可以在一个enum上调用values方法,以遍历枚举值,在对象上调用getClass().getName(),将返回enum的Java完全限定名称
- 可以在values所返回的对象上调用name和ordinal方法,以分别获取该实例的名称和排序值。
十三章 操作日期和时间
1 instant类:instant对象表示时间线上的一个时间点。引用的时间点是一个标准的java新纪元
2 LocalDate类:建模了没有时间部分的日期。getDayOfMonth、getMonth等方法用于获取一个LocalDate、他们不接受任何参数并返回一个int类型或者一个常量。
最好使用getMonth和getYear等方法获取LocalDate的一部分,而不是get因为并不是所有常量都支持。
3 Period类:基于日期的一个时间量。一个Period是不可变的。
4 LocalDateTime:建模了一个没有时区的日期时间。
创建一个LcoalDateTime表示日期
LcoalDateTime ednOfYear=LcoalDateTime.of(2015,12,31,8,0)
5 时区数据库下载网址:http://www.iana.org/time-zones
6 ZoneDateTime类:表示又时区的日期时间,是不可变的,按照秒精度储存的。now的无参数覆盖形式。of也有几种覆盖形式,都需要传入一个时区标识符。
7 Duration类:基于时间的时间段,与Period区别是它可以精确到纳秒
8 如果有了一个Date对象,可以用SetTime方法来构造一个Calendar对象。
9 在使用DateFormat解析和格式化的时候,要注意宽松性,即指在解析时是否执行严格的规则。ps:jan 32 2016
十四章 集合框架
1 集和框架提供了一种方法存储、访问、操作其他元素。
2 Collection接口是处理对象集合的根接口,其中定义了很多对元素进行操作的方法,AbstractCollection是提供Collection部分实现的抽象类。
3 List接口扩展自Collection,它可以定义一个允许重复的有序集合,从List接口中的方法来看,List接口主要是增加了面向位置的操作,允许在指定位置上操作元素
4 它是用数组存储元素的,这个数组可以动态创建,如果元素个数超过了数组的容量,那么就创建一个更大的新数组,并将当前数组中的所有元素都复制到新数组中。
5 HashSet是一个用于实现Set接口的具体类,可以使用它的无参构造方法来创建空的散列集,也可以由一个现有的集合创建散列集。
6 Collection 接口的iterator()方法返回一个 Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection 中除去适当的元素。
7 Set不允许有重复的内容
8 队列是一种先进先出的数据结构,元素在队列末尾添加,在队列头部删除。Queue接口扩展自Collection,并提供插入、提取、检验等操作。
9 方法offer表示向队列添加一个元素,poll()与remove()方法都是移除队列头部的元素,两者的区别在于如果队列为空,那么poll()返回的是null,而remove()会抛出一个异常。方法element()与peek()主要是获取头部元素,不删除。
10 Map,图,是一种存储键值对映射的容器类,在Map中键可以是任意类型的对象,但不能有重复的键,每个键都对应一个值,真正存储在图中的是键值构成的条目。
11 Map保存了键到值的映射,不能有重复元素,每个键最多映射一个值。 键和值在调用put方法前会先进行装箱操作。
12 接口Map提供了很多查询、更新和获取存储的键值对的方法,更新包括方法clear()、put()、putAll()、remove()等等,查询方法包括containsKey、containsValue等等。Map接口常用的有三个具体实现类,分别是HashMap、LinkedHashMap、TreeMap。
13 HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。
14 引用对象不包含操作对象,而是包含对象在内存中的地址。
15 Elephant类:由编写者决定排序.可以使用Arrys.sort或Collections.sort来排序Elephant对此昂的数组或者list。
编程实践截图
进度条
学习到第十四章