整数类型和字面值
int 是最常用的整数类型,一个 int 类型的变量占 4 个字节(32 位),最大的表示范围是 -2³¹ 到 2³¹-1,也就是 -2147483648 ~ 2147483647。
什么是字面值
字面值就是直接写出来的值,比如下面语句中 100 就是字面值:
int a = 100; // 100 就是字面值,它是固定写在代码里的Code language: JavaScript (javascript)
整数字面值规则
- 整数的字面值默认就是
int类型,不是long、byte或short。 - 如果字面值超出
int的范围,编译就会报错。 - 除了用十进制表示,还可以使用:
- 十六进制:以
0x或0X开头 - 八进制:以
0开头
- 十六进制:以
int a = 100; // 十进制
int e = 017; // 八进制,相当于十进制的 15
int f = 0xAB; // 十六进制,A=10 B=11,计算:10×16+11 = 171
System.out.println(e); // 输出 15
System.out.println(f); // 输出 171Code language: PHP (php)
- 其他数据类型也有字面值,比如:
boolean g = true; // true 就是 boolean 类型的字面值
double h = 0.1; // 0.1 就是 double 类型的字面值Code language: JavaScript (javascript)
整数相除
两个整数相除,会舍弃小数部分(不是四舍五入),结果也是整数:
int j = 5 / 2; // 结果是 2,小数部分 0.5 被直接舍弃
System.out.println(j); // 输出 2Code language: JavaScript (javascript)
整数溢出问题
溢出就是”东西满了,漏出来了”。两个整数运算时,结果可能会超出 int 的表示范围而发生溢出。
int k = 2147483647 + 1; // 最大值 + 1
System.out.println(k); // 输出 -2147483648Code language: JavaScript (javascript)
溢出不是代码错误,编译器不会报错,但会导致业务数据错误,所以必须注意。
// int c = 2147483648; // 编译报错,字面值超出 int 最大范围
int d = 2147483647; // 最大值,没有超出范围,正常Code language: JavaScript (javascript)
如果数据真的非常大,可以使用 long 类型来存储,比如银行系统的个人存款金额:
long balance = 10000000000L; // 注意加 L 后缀Code language: JavaScript (javascript)
完整示例代码
public static void main(String[] args) {
int a = 100; // 100 是字面值,固定写在代码中
int b = 0; // 0 也是字面值
// 整数字面值默认是 int 类型
// int c = 2147483648; // 出错,超出 int 最大范围
int d = 2147483647; // 最大值,未超出范围
int e = 017; // 八进制,相当于十进制 15
int f = 0xAB; // 十六进制,输出 171
System.out.println(f);
// 其他类型也有字面值
boolean g = true;
double h = 0.1;
int j = 5 / 2; // 舍弃小数部分,结果为 2
System.out.println(j);
int k = 2147483647 + 1; // 运算不会报错,但发生溢出
System.out.println(k); // 输出 -2147483648,业务数据错误
// 数据非常大时,使用 long 类型
}Code language: JavaScript (javascript)
Previous: 基本数据类型
Next: 长整数类型和解决整数运算溢出的问题