1. switch表达式 优于 switch语句;
- switch表达式含“->” , 有返回值,无直通行为;switch语句含“:”,无返回值,有直通行为;
- 两者不可混用;switch表达式的case语句有表达式时,用“{}”包裹,并用
yield
返回值;
2. Java设计语言总是采用 按值调用 的;
即方法会得到所有参数的一个副本;
- 无法修改基本数据类型的参数;
- 无法修改对象类型参数(实参)的引用;比如方法中交换两个形参对象,并不会让调用方法的两个对象真的发生交换,因为实际上是方法内的两个引用的副本发生了交换,与调用方法的原本两个引用无关;
3. 返回类型不是方法签名的一部分;
即不能有两个名称相同、参数相同但返回值却不同的方法;
4. 成员变量(字段)会自动初始化,但方法中的局部变量不会;
5. 对象初始化块在任意构造函数调用执行前执行,静态初始化块在类第一次加载的时候执行;
6. 记录(record);
有时,数据就是数据,用面向对象的设计提供的数据隐藏有些碍事,可以使用记录;
- 用记录定义状态不可变的,而且公共可读性;
- 如果有可变字段,还是实用类来定义。
- 不能为记录增加实例变量;
- 记录构造器有三种形式:标准、自定义和简洁;简洁构造器主体中不能读取或修改实例变量;
record Point(double x, double y) {} // 定义
record Point(double x, double y) {
private double r; // error
}