数据类型

类型 字节数 范围 举例
byte 1 $-128\sim 127$ ($-2^7\sim 2^7 - 1$) 123
short 2 $-2^{15}\sim 2^{15} - 1$ 12345
int 4 $-2^{31}\sim 2^{31} - 1$ 12345678
long 8 $-2^{63}\sim 2^{63} - 1$ 1234567890123L
float(高精度) 4 $-2^{31}\sim 2^{31} - 1$ 1.2F
double(高精度) 8 $-2^{63}\sim 2^{63} - 1$ 1.3, 1.3D
boolean 1 true/false
char 2 ‘A’

为什么byte的范围为$-2^7\sim 2^7 - 1$?

Java中所有整数类型都是使用补码来表示有符号整数

1 byte = 8 bit
8 bit的表示方法:0000 0000,每一位只有0 1,也就是二进制

在字节数范围表示中规定:

  • 第一位如果是0:表示正数
  • 第一位如果是1:表示负数

最小值:1000 0000 表示-128
最大值:0111 1111 表示127

十进制 原码(二进制) 反码 补码
+5 0000 0101 - 0000 0101
-5 1000 0101(原码) 1111 1010(反码) 1111 1011(补码)
-1 1000 0001(原码) 1111 1110(反码) 1111 1111(补码)
-128 1000 0000(特殊情况)