对类型转换和自动装箱做个串联小结:
1. long a=1; //编译通过,向上自动转型
2. long a=1;Long b=a;//编译通过,Long.valueOf 语法糖,自动装箱
3. Long a=1L;//同上
4.Long a=1;//编译报错
Long a=1 之所以报错,个人理解:
向上自动转型适用于基本类型,不能用于包装类型,因此场景1不适用;
自动装箱只适用于基本类型和包装类型直接匹配的场景,无法通过自动转型间接匹配。示例2中1L编译器可以识别为long,变量类型为Long,可以进行自动装箱;示例4中1的基本类型为int,变量类型为Long,二者不匹配,无法装箱。尽管int可以通过自动转型成为long,但目前看来编译器无法再自动装箱的同时应用类型转换。