![剑指Java:核心原理与应用实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/443/47500443/b_47500443.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
第3章 基础语法
3.4.2 整型
整型可以说是最常用的一种数据类型,它用来表示各种整数值,如年龄为18岁,18就是一个整数值。整数可以很小也可以很大,为了表示不同大小的整数,Java将整型划分为如下四种类型,如表3-4所示。
表3-4 整型
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_25.jpg?sign=1739428505-ZTDzQMgduCAp3XBB0TeEYeOHVJLzzsMM-0-e4ad9d1577bdf72598c4243db86df02d)
Java中int是最常用的整型之一,系统通常将一个整型值默认当作int处理。需要注意的是以下三种情形。
(1)如果将一个整型字面量值赋值给byte或short,编译器会先判断这个整型字面量值是否在指定类型的表数范围内,如果在,则赋值成功;如果不在,则编译报错。
示例代码:
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_26.jpg?sign=1739428505-W2Hnxuw1EJ86Fiutx5MjlJTyzfafaea8-0-8cd90fa6c4d752b6c23424d6f60cbed3)
超出byte类型范围的错误提示如图3-10所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_27.jpg?sign=1739428505-Kjd7l0O4mHiCSxTkxB9Ry7bGGwg8l7H3-0-2aaae1fb0227b1eadd38ebc8fbef4643)
图3-10 超出byte类型范围的错误提示
示例代码:
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_28.jpg?sign=1739428505-XPC0lI6Uf3FdWYk2ZtgVRjP1SJ6zoMAp-0-1c0a0565e6b1b395d4749f03804a5275)
超出short类型范围的错误提示如图3-11所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_29.jpg?sign=1739428505-6KrC2oCCvv40BbDGF8HfJPp3xL4m1cSL-0-8d54b8259af055b565f1a7037bf4e6ec)
图3-11 超出short类型范围的错误提示
(2)如果将一个巨大的整型常量赋值给long类型,那么需要以小写l或大写L作为后缀。因为小写l很容易和1搞混,所以推荐使用L。
示例代码:
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_30.jpg?sign=1739428505-QSO8tZZPgR2WhQuVxmpKiHj2zEIJvNbI-0-f3d696b5eb8cbe478f01d6b29f168170)
过大整数的错误提示如图3-12所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_31.jpg?sign=1739428505-93kF7bDcUV2ly7NDDPVRYZPvxLE6kH2K-0-47015262c16ab171e195955def1fbdf7)
图3-12 过大整数的错误提示
(3)在JDK 1.7中,整型字面量值支持如下所示的二进制形式。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_32.jpg?sign=1739428505-NTx55ClWjRPdSit5HfHj0t0Z1HObCvaA-0-63596fd8b582d1c3b1f8f5056b6b2cc8)
由于数值位数较长,还支持自由使用下画线分割。这样人们可以更直观地分辨数值常量中到底包含多少位。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt003_33.jpg?sign=1739428505-wmvyD6HNsZfhkZeSlZzPK7Ll4jkmsHD9-0-3150e101ae40e7e03be43161b88cc1dc)
byte和short的实际存储和运算都是当作int类型处理的,通过分析字节码你会发现,使用byte和short类型声明变量,实际分配都是4字节的空间。系统划分出byte和short,主要是逻辑意义上的划分,编译时检查数值的范围。后续可以根据具体的应用场景选择适当的数据类型,如创建一个数组,长度可以是byte类型;查询数据库表中的数据条目数,通常是long类型。在默认情况下,习惯使用int类型来定义整型。