Java中{P'和“P”的大小差异

时间:2016-01-25 04:47:55

标签: java

字符常量'P'的大小与包含单个字符的字符串(例如“P”)有区别吗?我知道两者都应该是2字节。我对吗?有没有办法通过Java中的代码检查这个(比如C中的sizeof运算符)? TIA

1 个答案:

答案 0 :(得分:0)

char是两个字节。 StringObject,因此其大小实际上取决于实现。典型的实现至少包括:

  • 对象本身的引用(不是对象本身的一部分,但是你不能有一个没有至少一个引用的对象),它是指针(32位或64位)或compressed pointer ,可能更小;
  • 对包含字符串的数组的引用,这是另一个指针或压缩指针;
  • 类型int的数组大小,即4个字节;
  • 数组本身,其大小为2(以字节为单位);
  • 基类(Object)包含的任何其他内容,通常它没有显式字段,但可能具有“隐藏”本机实现数据。

因此,对于一个32位系统,将是4 + 4 + 4 + 2 = 14字节,添加可能的对齐效果,我猜它至少会是16个字节。在具有高效压缩指针和足够小的堆的64位系统上,它可能是相同的。