1

所以我的文件中有一行代码,内容为

char[] arr = new char[256];

但是,当我将其更改为

int[] arr = new int[256];

类文件缩小了 0.01 Kb。为什么是这样?

4

2 回答 2

4

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

如果您.class在 vim 中打开,您将看到以下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您可以看到代码中的差异。

于 2013-08-04T05:26:38.380 回答
1

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

于 2013-08-04T05:20:56.890 回答