1、final
- 修饰字段(成员变量)时,该字段不支持默认初始化,必须在构造对象时初始化。(静态字段则需要显示初始化或在静态初始化块中初始化)
- 修饰方法时,该方法不允许覆盖。
- 修饰类时,该类不允许被继承,且类中的所有方法自动地成为 final 方法。
2、this
- 指示隐式参数的引用(特别的:在内部类中使用
OuterClass.this
指示外围类的引用;在 lambda 表达式中,指示创建这个表达式的方法的 this 参数) - 调用该类的其他构造器:
this(...)
3、super
- 调用接口的默认方法:
接口名.super.xxx()
- 调用超类的方法或字段
- 调用超类的构造器
与 this 不同,super 不是对象的引用,不能将 super 赋给另一个对象变量。
4、static
可以修饰字段、方法、初始化块、内部类,它们随着类的加载而加载;可以和 import 组合成 import static 静态导入。
需要注意的是,当static
修饰方法时,该方法不能访问实例字段、不能使用this
和super
关键字。
5、instanceof
- 可以用来判断 a 是否为类 A 或其子类的实例(如果
a instanceof A == true
,则a instanceof A 的超类 == true
;如果 a 为 null,则a instanceof A == false
) - 可以用来判断 a 是否实现了 A 接口
6、var(java 10)
只能用于方法中的局部变量,参数和字段的类型必须显示声明。
7、assert
形式:assert condition
或assert condition : expression
。
这两个语句都会计算条件,如果条件为false
,则抛出AssertionException
异常。在第二个语句中,expression 将传入AssertionError
对象的构造器,并转换成一个消息字符串。
在默认情况下,断言是禁用的。我们可以在运行程序时,用如下选项启用或禁用断言:
启用断言:-ea
/-ea:Class
/-ea:Package
;禁用断言:-da
/-da:Class
/-da:Package
。
选项 -ea 将打开无名包中所有类的断言。
java -ea:MyClass -ea:com.mycompany.mylib MyApp
以上命令将为 MyClass 类以及 com.mycompany.mylib 包和它的子包
中的所有类打开断言。
什么时候使用断言:
- 记住断言失败是致命的、不可恢复的错误
- 断言检查只是在开发和测试阶段打开
看不懂,待解决:{
需要注意的是,不必重新编译程序来启用或禁用断言,因为启用或禁用断言是类加载器
的功能。
启用和禁用所有断言的 -ea 和 -da 选项不能应用到没有类加载器的“系统类”上,此时需要使用-esa
和dsa
选项。
}
如有错误,欢迎指正。.... .- ...- . .- -. .. -.-. . -.. .- -.-- -.-.--