您的位置:首页 > 编程语言 > Java开发

Java语言基础学习笔记(三)

2017-09-16 08:38 417 查看
1. 强制类型转换有可能发生编译错误或者强制类型转换异常,可以使用instanceof操作符先测试对象。

2. 定义在接口中的任何变量自动成为public static final静态常量。

3. 接口中可以添加静态方法和默认方法。

4. 两个接口的方法冲突时,且至少一个提供的是默认方法,实现类必须覆写该方法以解决冲突。使用super关键字可以调用父类的该方法:父类.super.方法。

5. 如果一个类继承一个父类,且实现了一个接口,而且从父类和接口继承了同样的方法,这种情况直接忽略接口的默认方法,使用父类方法。

6. 在Java中,方法能够访问它自己所在类的(其他)对象的任何私有成员。使用方法:类对象实例.私有成员

7. ”lambda表达式“是一块代码,你可以用将他传递出去,这样后面就可以执行一次或多次。

8. 当你期望只有一个抽象方法的接口对象时,就可以提供一个lambda表达式,这样的接口被称为函数式接口。

9. 对lambda表达式你只能做一件事情,将其放入类型为函数式接口的变量中,这样他就被转换为该接口的实例。不能将他赋值给其他变量。

10. 方法引用等同于lambda表达式。有三种使用方式:

 (a)类::实例方法,第一个参数将成为方法的接收者 

 (b)类:静态方法,所有参数都被传递给方法 

 (c)对象::实例方法,对象作为方法的接收者

11. 可以在方法引用中捕获this,例如:this::equals 等同于 x->this.equals(x)

12. 在内部类中,可以使用 外部类.this::方法名 来捕获外部类的this引用,也可以捕获super

13. 构造函数的方法引用都是 类::new

14. 可以使用数组类型来编写构造函数引用。int[]::new 等同于 n->new int

15. 数组构造函数引用可以用来绕过java的一个限制,无法构造一个泛型数组。toArray方法返回的是一个Object数组,而不是特定类型的数组。可以使用另一个版本的toArray(类[]::new)来构造返回特定类型的数组。

16. 使用@FunctionalInterface注解标记函数式接口,编译器会检查接口是否带有单个抽象方法,javadoc也能识别。

17. lambda表达式的方法体与嵌套代码块具有相同的作用域。

18. lambda表达式有三个部分:

(a)代码块

(b)参数

(c)自由变量,既不是参数变量,也不是代码块内定义的临时变量

19. 带有自由变量值的代码块就是闭包。lambda表达式就是闭包。

20. lambda表达式可以捕获闭合作用域内的变量,但是有一个约束,只能捕获那些值不会改变的变量,也被称为有效final变量。

21. 增强型for循环中的变量是有效final变量,因为他的作用域是单个迭代。

22. 可以在方法中定义类,这样的类被称为局部类。

23. 在java引入lambda表达式之前,匿名内部类是提供runnable,comparator以及其他函数式对象最简洁的语法。现在只有你需要提供两个或以上抽象方法是,匿
8864
名类才有使用需要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: