我马上就要被 JVM 虚拟机老大加载并运行了,此时老虚走了过来。
老虚:小渣呀,我马上就要把你载了,你先瘦身一下,别占太大地方。
小渣:好的,没问题,等我十秒钟。
public class FlashObject{private String name;private int age;public int add(int a,int b){return a+b;}
小渣:老虚,我瘦身好了,你看看。
老虚:…,你是不是有病。
小渣:怎么了,我把没用的空格和回车啥的都去掉了,瘦身了好多呢!
老虚:行吧,看你这智商,我就给你解释解释。你现在仍然是个文本文件,让你瘦身是让你定一个紧凑的数据结构来表示你这个 Java 文件里的信息,然后告诉我这个数据结构中每个字节都代表什么。
小渣:哦哦,这样啊。
老虚:对啊,这样一是方便我去加载,二是我这个虚拟机可不只是为你 Java 语言服务的,还有很多语言最终都可以转换为我虚拟机识别的,你得设计一个通用的格式。
小渣:嗯嗯,这回我明白啦!
1类信息
我的类名叫 FlashObject。
先找个地方把它存起来,放开头吧。
这里的一个小方格是 1 个字节,也就是 8 位。一个英文字母用 ASCII 码表示为 1 个字节,所以占一个方格,之后不再解释。
严谨的我又想到,这个类应该还有其父类。
虽然这个 .java 文件中没写,但也有其默认父类,Object。
当然,我们得记录下全类名
java/lang/Object
记在哪里呢?就紧跟在类名后面吧。