为什么Java需要有字节,短原始变量类型,即使它们被自动提升为int类型?为什么不在一开始就声明int类型?
答案 0 :(得分:0)
大多数情况下,您只会使用boolean,int和double。有时也会使用char和long。官方Java API表示其他类型的byte,short和float几乎都是为了在需要大量变量时节省内存,如数千到数百万。这是大多数初学程序员不必担心的问题。
如果内存是一个问题,这在今天的计算机上是不可能的,并且你需要的值将适合一个字节(例如年龄,因为还没有人进入120年代),那么你可以有四个字节的基元在一个int原语的空间中。在编程的早期阶段,这是一个巨大的节省。因为即使对于布尔值,内存也是8组,通过使用按位运算符,8位变量实际上可以容纳8个布尔值,而通常需要64位作为8个布尔变量。节省8:1。
其他类型被自动提升为int的原因是简单的二元操作,特别是乘法,可以很容易地从较小的原语范围中得到结果。
// This simple operation gives a result that cannot be stored in a byte
byte b = 10 * 13;
当然,一旦进行计算,就需要施法,在这种情况下,它甚至会给出负数,-126。如果计算需要积极的东西,比如区域,这可能是一个问题。
答案 1 :(得分:0)
它们不会自动升级。它们通过隐式投射得到提升。