
2.2.2 整数类型

在Java中表示整数后,Java会将整数保存。由于存储方式不同,反过来又会影响整数的表示方式。Java语言提供了整型、短整型、字节型和长整型4种类型用来保存整数。下面将依次讲解这几种类型。
1.整型(int)
在Java语言中,整数的默认保存类型为整型。该类型占用4字节,如图2.11所示。其中,每个方格表示1字节。

图2.11 整型占4字节
助记:int是整型的英文单词integer的缩写,其发音为[ˈɪntɪdʒə(r)]。
查看计算机中整型占用的字节数,可以执行以下代码:

运行结果如下:

其中,java.lang.Integer.SIZE获取的是位数,所以需要除以8,才能获取字节数。
整型的范围为-231~231-1,即-2147483648~2147483647,如图2.12所示。

图2.12 整型的范围
查看计算机中整型的范围,可以执行以下代码:

运行结果如下:

注意:\n是用来实现换行的。
注意:使用整型存储整数时,这个整数不可以超出整型的范围,即-231~231-1,否则程序会出现错误,如以下代码:

由于2147483650超出了整型的范围,所以会输出以下错误信息:

2.短整型(short)
如果要表示的整数值比较小,仍然使用整型来表示,就会浪费空间。为了节省空间,Java语言提供了短整型。它比整型占用的空间要小,只使用2字节,如图2.13所示。

图2.13 短整型占2字节
助记:short是一个英文单词,本身意思就是短,其发音为[ʃɔ:t]。
查看计算机中短整型占用的字节数,可以执行以下代码:

运行结果如下:

其中,java.lang.Short.SIZE获取的是位数,所以需要除以8,才能获取字节数。
短整型的范围为-215~215-1,即-32768~32767,如图2.14所示。

图2.14 短整型的范围
查看计算机中短整型的范围,可以执行以下代码:

运行结果如下:

注意:使用短整型存储整数时,这个整数不可以超出短整型的范围,即-215~215-1,否则程序会出现“过大的整数”这一错误。
3.字节型(byte)
如果要表达的整数值非常小,使用短整型仍然会造成空间浪费。这时,可以使用Java语言提供的字节型。它只占1字节,如图2.15所示。

图2.15 字节型占1字节
助记:byte是一个英文单词,本身意思就是字节,其发音为[baɪt]。
查看计算机中字节型占用的字节数,可以执行以下代码:

运行结果如下:

其中,java.lang.Byte.SIZE获取的是位数,所以需要除以8,才能获取字节数。
字节的范围为-128~127,如图2.16所示。

图2.16 字节型的范围
查看计算机中字节型的范围,可以执行以下代码:

运行结果如下:

注意:使用字节型存储整数时,这个整数不可以超出字节型的范围,即-128~127,否则程序会输出“过大的整数”这一错误信息。
4.长整型(long)
如果要表示的整数非常大,超过整型可以表示的范围,就需要使用Java语言提供的长整型。该类型占8字节,如图2.17所示。

图2.17 长整型占8字节
助记:long是一个英文单词,本身意思就是长,其发音为[lɒŋ]。
查看计算机中长整型占用的字节数,可以执行以下代码:

运行结果如下:

其中,java.lang.Long.SIZE获取的是位数,所以需要除以8,才能获取字节数。
长整型的范围为-263~263-1,即-9223372036854775808~9223372036854775807,如图2.18所示。

图2.18 长整型的范围
查看计算机中长整型的范围,可以执行以下代码:

运行结果如下:

注意:使用长整型存储整数时,这个整数不可以超出长整型的范围,即-263~263-1,否则程序会输出“过大的整数”这一错误信息。
由于整数默认使用整型进行存储,所以要使用长整型存储整数时,必须在数字后面加l或L。如果不加,很可能会导致这个值丢失,或提示错误信息,如以下代码:

此时会输出以下错误信息:

对于整型、短整型、字节型及长整型来说,它们都是用来存储整数的,只是存储的字节数和范围不同。需要对比并掌握其所占用的空间和表示的数值范围,如图2.19所示。

图2.19 4种整数类型占用的字节数和范围