算法(4th ed)(191):基础——算法分析 6.9.4

阅读数:17 2019 年 11 月 9 日 15:44

算法(4th ed)(191):基础——算法分析 6.9.4

(内存:字符串对象)

我们可以用相同的方式说明 Java 的 String 类型对象所需的内存,只是对于字符串来说别名是非常常见的。String 的标准实现含有 4 个实例变量:一个指向字符数组的引用(8 字节)和三个 int 值(各 4 字节)。第一个 int 值描述的是字符数组中的偏移量,第二个 int 值是一个计数器(字符串的长度)。按照图 1.4.10 中所示的实例变量名,对象所表示的字符串由 value[offset]value[offset + count - 1] 中的字符组成。String 对象中的第三个 int 值是一个散列值,它在某些情况下可以节省一些计算,我们现在可以忽略它。因此,每个 String 对象总共会使用 40 字节(16 字节表示对象,三个int 实例变量各需 4 字节,加上数组引用的 8 字节和 4 个填充字节)。这是除字符数组之外字符串所需的内存空间,所有字符所需的内存需要另记,因为Stringchar 数组常常是在多个字符串之间共享的。因为 String 对象是不可变的,这种设计使 String 的实现在能够在多个对象都含有相同的 value[] 数组时节省内存。

评论

发布