JAVA学习笔记
Java 关键字
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
| 类别 | 关键字 | 说明 |
|---|---|---|
| 访问控制 | ||
| private | 私有的 | |
| protected | 受保护的 | |
| public | 公共的 | |
| default | 默认 | |
| 类、方法和变量修饰符 | ||
| abstract | 声明抽象 | |
| class | 类 | |
| extends | 扩充,继承 | |
| final | 最终值,不可改变的 | |
| implements | 实现(接口) | |
| interface | 接口 | |
| ★★★ | native | 本地,原生方法(非 Java 实现) |
| new | 新,创建 | |
| static | 静态 | |
| ★★★ | strictfp | 严格,精准 |
| ★★★ | synchronized | 线程,同步 |
| ★★★ | transient | 短暂 |
| ★★★ | volatile | 易失 |
| 程序控制语句 | ||
| ★★ | break | 跳出循环 |
| case | 定义一个值以供 switch 选择 | |
| ★★ | continue | 继续 |
| ★★★ | default | 默认 |
| do | 运行 | |
| else | 否则 | |
| for | 循环 | |
| if | 如果 | |
| ★ | instanceof | 实例 |
| return | 返回 | |
| switch | 根据值选择执行 | |
| while | 循环 | |
| 错误处理 | ||
| ★★★ | assert | 断言表达式是否为真 |
| catch | 捕捉异常 | |
| finally | 有没有异常都执行 | |
| ★★★ | throw | 抛出一个异常对象 |
| ★★★ | throws | 声明一个异常可能被抛出 |
| try | 捕获异常 | |
| 包相关 | ||
| import | 引入 | |
| package | 包 | |
| 基本类型 | ||
| boolean | 布尔型 | |
| byte | 字节型 | |
| char | 字符型 | |
| double | 双精度浮点 | |
| float | 单精度浮点 | |
| int | 整型 | |
| long | 长整型 | |
| short | 短整型 | |
| 变量引用 | ||
| super | 父类,超类 | |
| this | 本类 | |
| void | 无返回值 | |
| 保留关键字 | ||
| goto | 是关键字,但不能使用 | |
| const | 是关键字,但不能使用 |
**注意:**Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
Java 5 (2004 年 9 月)
Java 注解(Annotation)
Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。
作用在代码的注解是
- @Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
- @Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
- @SuppressWarnings - 指示编译器去忽略注解中声明的警告。
作用在其他注解的注解(或者说 元注解)是:
1 | //定义一个注解类 |
此后的更新
- @SafeVarargs - Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
- @FunctionalInterface - Java 8 开始支持,标识一个匿名函数或函数式接口。
- @Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。
Java 8 (2014 年 3 月 )
lambda表达式
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
典型示范
1 | // 使用 java 7 排序 |
- lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
- Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。
方法引用
方法引用通过方法的名字来指向一个方法。
1 | //java 8 写法 |
函数式接口
定义函数式接口
1 |
|
JDK 1.8 新增加的函数接口:
- java.util.function https://www.runoob.com/java/java8-functional-interfaces.html
接口的默认方法(default )
1 | public interface Vehicle { |
流(Stream)
流水线式处理,以一种声明的方式处理数据