Long a=1为何编译报错

对类型转换和自动装箱做个串联小结:

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,但目前看来编译器无法再自动装箱的同时应用类型转换。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容