java中的类型提升问题
byte a = 1;
byte b= 2;
byte c = (byte) (a+b);
这里为什么要将a与b相加的结果在转为byte类型呢?即使所得的结果仍然没有超过byte类型所能表示的大小。原因是这样的:
使用较小类型运算没有性能优势,消除较小的类型使得字节码更简单,并且使得具有未来扩展空间的完整指令集仍然适合单个字节中的操作码。因此,较小的类型通常被视为Java设计中的二等公民,在各个步骤转换为int,因为这简化了一些事情。
较小的类型引入专用的算术逻辑单元不值得付出努力:它需要额外的晶体管,但它仍然只能在一个时钟周期内执行一次加法。 JVM设计时的主流架构是32位,适合32位int。
这是博主原文:
为什么两个short类型相加会自动提升为int?
相关的类似问题还有:
为什么 short、byte 会被提升为 int?及基本类型的真实大小
在C语言里好像也有这样的设定,就是把短整型-short int也在运算时也自动提升为int类型,因为效率高,运算比较快。
在此安利一个入门java的学习非常棒的网站,讲得非常细致how2j.cn。