Java原始变量类型

时间:2016-01-25 14:07:25

标签: variables type-conversion primitive

为什么Java需要有字节,短原始变量类型,即使它们被自动提升为int类型?为什么不在一开始就声明int类型?

2 个答案:

答案 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)

它们不会自动升级。它们通过隐式投射得到提升。