当我将int数组更改为char数组时,为什么我的.class文件更大?

时间:2013-08-04 05:18:19

标签: java memory

所以我的文件中有一行代码,显示为

char[] arr = new char[256];

但是,当我将其更改为

int[] arr = new int[256];

类文件缩小.01 Kb。这是为什么?

2 个答案:

答案 0 :(得分:4)

这可能是因为编译器生成的符号短了几个字符。就像在.java文件中一样,第一行会创建一个更大的文件,因为它有更多的字符。

如果您在vim中打开.class,您会看到int数组的以下内容。

Êþº¾^@^@^@2^@^O
^@^C^@^L^G^@^M^G^@^N^A^@^F<init>^A^@^C()V^A^@^DCode^A^@^OLineNumberTable^A^@^Dmain^A^@^V([Ljava/lang/String;)V^A^@
SourceFile^A^@!JFileChooserDisableDirectory.java^L^@^D^@^E^A^@^\JFileChooserDisableDirectory^A^@^Pjava/lang/Object^@!^@^B^@^C^@^@^@^@^@^B^@^A^@^D^@^E^@^A^@^F^@^@^@^]^@^A^@^A^@^@^@^E*·^@^A±^@^@^@^A^@^G^@^@^@^F^@^A^@^@^@^A^@  ^@^H^@  ^@^A^@^F^@^@^@"^@^A^@^B^@^@^@^F^P
¼
L±^@^@^@^A^@^G^@^@^@
^@^B^@^@^@^D^@^E^@^E^@^A^@
^@^@^@^B^@^K

以下是char数组.class文件。

Êþº¾^@^@^@2^@^O
^@^C^@^L^G^@^M^G^@^N^A^@^F<init>^A^@^C()V^A^@^DCode^A^@^OLineNumberTable^A^@^Dmain^A^@^V([Ljava/lang/String;)V^A^@
SourceFile^A^@!JFileChooserDisableDirectory.java^L^@^D^@^E^A^@^\JFileChooserDisableDirectory^A^@^Pjava/lang/Object^@!^@^B^@^C^@^@^@^@^@^B^@^A^@^D^@^E^@^A^@^F^@^@^@^]^@^A^@^A^@^@^@^E*·^@^A±^@^@^@^A^@^G^@^@^@^F^@^A^@^@^@^A^@  ^@^H^@  ^@^A^@^F^@^@^@"^@^A^@^B^@^@^@^F^P
¼^EL±^@^@^@^A^@^G^@^@^@
^@^B^@^@^@^D^@^E^@^E^@^A^@
^@^@^@^B^@^K

使用TextDiff,您可以看到代码中的差异。

答案 1 :(得分:1)

可能只是因为该类型的符号有点短。