for-each
不可以删除元素 只能正向遍历 不能同时遍历两个集合
enum(枚举类型)
内有多少值,就有多少实例对象,不能直接new枚举对象
还可以添加属性,构造函数,方法。
构造函数之能是default,private内部调用
不定向参数
类型后面加3个点 ... 本质上是一个数组
一个方法只能有一个不定向参数,必须位于参数列表的最后
静态导入 import static
自动装箱和拆箱
基本类型boolean/byte/char/int/short/long/float/double
对象boole/Byte/Character/Integer/Short/Long/Float/Double
==,基本类型是内容是否相同,对象的时候是判断指针是否相同
多异常并列 | 管道符号 异常之间不能有继承关系
整数类型二进制直接赋值
数值字面在数字之间可以使用下划线
接口
接口的默认方法 default 非权限 默认方法的标志 带实现 可以被子类继承
接口的静态方法 static 无法传给子类 对象无法调用
接口的私有方法 private 无法传给子类
接口都不能被实例化(new)
try-with-resource
原理:资源对象必须实现AutoCloseable接口,即实现close()方法。自动关闭,可直接使用外部资源
var类型
局部变量推断(个人感觉类似python) 本质上还是强类型,编译器自动推断类型,推断以后不能更改类型多
不能用在方法(形式)参数和返回类型中
分支合并 switch -> 直接连接判定条件和动作
泛型<>
好处 可以被不同类型的对象所引用
本质 参数化类型,避免类型转换,代码可复用
泛型类 在类名后用<T>代表引入的类型
泛型接口 实现接口时,指定类型。<T>中T也可以再是泛型
泛型方法 <T>在修饰符后,返回类型前
上界限定符extends
只能get,不能set,因为编译器不知道放入的是什么类型,只能保证出来的是什么类型,肯定可以转型到S(用S可以接收)
下界限定符super
只能set,不能get。编译器保证放入的是s类或者s的超类,但不能保证出来的是什么类型,只能用object来接收
pari<T>和pari<S> 泛型之间没有任何关系(继承等等),无论T和S之间是什么关系
pecs原则
<?>无限定通配符,可以表示任意类型