查阅Jvadoc了解Java 8种基本类型的包装类,写个程序测试除了boolean外的变量长度
时间: 2024-09-28 11:05:13 浏览: 62
在Java中,为了处理八种原始数据类型(byte, short, int, long, char, float, double)的特殊性质,比如它们的默认值、自动装箱和拆箱操作等,Java提供了一组对应的引用类型——基本类型的包装类(如Byte, Short, Integer, Long, Character, Float, Double)。这些包装类实际上是对原始类型的一种增强,每个包装类都是其对应基本类型的对象。
关于字节(byte)、短整型(short)、整型(int)、长整型(long)、字符(char)的包装类,它们的实例在内存中的大小通常比原始类型大一些,因为它们包含了额外的对象头信息。然而,`Boolean` 类型是个特例,因为它代表的是布尔值True和False,而不是对象,所以它的长度与其他包装类不同。
下面是一个简单的Java程序,用于测试除`boolean`之外的其他七种包装类的实例占用的内存大小:
```java
import java.lang.reflect.Field;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
try {
Class<?>[] wrappers = { Byte.class, Short.class, Integer.class, Long.class, Character.class, Float.class, Double.class };
for (Class<?> wrapper : wrappers) {
if (!wrapper.equals(Boolean.class)) {
Field[] fields = wrapper.getDeclaredFields();
Field sizeField = wrapper.getDeclaredField("SIZE");
sizeField.setAccessible(true);
System.out.println(wrapper.getName() + " 的实际存储大小(字节):" + sizeField.getInt(null));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
```
运行这个程序,你会看到每个非`boolean`包装类的实际内存占用量(假设Java对象头固定大小忽略)。
阅读全文