整数类型和字面值

整数类型和字面值

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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注