- switch 在1.8支持case String类型,class中其实是根据hashCode和equals判断的,为什么需要equals,因为仅凭hashCode可能发生哈希碰撞。
- 泛型,没有泛型对应的class类型,java阶段的泛型都会在class阶段擦除,如HashMap
会被擦除为Hash Map.Class,而>会被擦除为Comparator类型,也就是都会擦除为最顶级的父类类型
避免编译报错,所以可以理解为什么泛型重载是不能编译的了吧,因为多实例映射到同一Class中,所以泛型,类里的静态变量对多个实例来说是共享的
- 自动装箱/拆箱,调用包装器的valueOf方法实现的,都是隐式的
- 可变入参
———>隐式转数组
- 枚举 :当我们使用enmu来定义一个枚举类型的时候,编译器会自动帮我们创建一个final类型的类继承Enum类,所以枚举类型不能被继承,还能创建独有的特性,语法糖就是封装,仅仅是编译时的概念
- 内部类 :也就是分别编译和源代码合并(如果把两个class反编译得到的还是一个源文件)
- 条件编译,也就是有的源代码不会编译,但是Java的条件编译特性很弱,原因是只支持显式的常量条件优化
举例子:其实也可以理解成Java编译器优化
-
- 断言 默认Assert是不在编译阶段生效的,可以配置-enableassertions会启用断言检查,断言其实就是if else,满足条件则true,false则会抛出AssertError异常
- 字面值,JDK1.7的时候,数字字面值就可以在数字中任意假的下划线_,编译时会自动去除下划线,目的是为了数字在源代码阶段更直观 10_000 = 10000
- for-each :for和迭代器
- try-with-resources语句,其实就是封装了对try catch finally的资源处理封装
- 最经典的,Lambda表达式:
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !