18.12.15
Java一个类不能实现两个相同的接口,编译时会报 error:接口重复
19.6.4
构造器调用顺序:
1.调用父类构造器,从最高层的继承开始往下递归
2.按声明顺序调用成员类
的初始化方法
3.调用当前类构造器主体
初始化的实际过程:
1.在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零
2.构造器的调用顺序
19.6.5
Set——
HashSet:不按照任何顺序存储,但是获取元素速度最快 —— 使用散列
TreeSet:比较结果的升序排序 —— 使用红黑树
LinkedHashSet:被添加顺序排序 —— 使用散列,但额外使用了链表维护元素插入顺序
Map——每个键只能存储一次
HashMap:提供最快的查找技术,无序
TreeMap:升序保存键
LinkedHashMap:按插入顺序保存键,同时保留了HashMap的查询速度
19.6.6
lambda表达式:允许把函数作为一个方法的参数传入,免去了使用匿名方法的麻烦(亮点)
基本语法:
(parameters) -> expression //一个参数不需要圆括号,一个语句不需要大括号;参数可声明类型也可不声明 //或 (parameters) ->{ statements; } //无大括号自动判定是否返回值,返回什么值;有大括号时需要使用return
例:
// 不用括号 GreetingService greetService1 = message -> System.out.println("Hello " + message); // 用括号 GreetingService greetService2 = (message) -> System.out.println("Hello " + message); greetService1.sayMessage("Runoob"); greetService2.sayMessage("Google");nterface GreetingService { void sayMessage(String message); }
注:
①、lambda表达式不可声明与局部变量同名的参数
②、lambda表达式可以直接引用外部局部变量,前提是该变量不会在lambda表达式调用之后被修改(所以可选择用final修饰)