跳转至

Java 的几种基本数据类型,各自占多少字节?

一、四类八种

类型 字节 包装类 默认值 取值范围
byte 1 8 Byte 0 -128 ~ 127
short 2 16 Short 0 -32768 ~ 32767
int 4 32 Integer 0 -2^31 ~ 2^31-1
long 8 64 Long 0L -2^63 ~ 2^63-1
float 4 32 Float 0.0f IEEE 754 单精度
double 8 64 Double 0.0d IEEE 754 双精度
char 2 16 Character '\u0000' 0 ~ 65535(UTF-16 码元)
boolean 视虚拟机而定 Boolean false true / false

二、分类

  • 整数:byte、short、int、long
  • 浮点:float、double
  • 字符:char
  • 布尔:boolean

三、注意点

  1. boolean 没有明确规定占多少字节,JVM 中通常用 1 个 int(数组中用 1 个 byte)。
  2. char 是 2 字节,因为 Java 内部用 UTF-16 编码。
  3. 基本类型不是对象,没有方法,存放在栈帧的局部变量表中。
  4. 包装类是对象,存在堆中,有自动装箱拆箱。

高频追问

  • 为什么 char 是 2 字节?因为 Java 设计时 Unicode 还是 16 位。
  • 包装类缓存:Integer 缓存 -128~127,Integer a = 127; Integer b = 127; 是同一个对象,超过就不是。