作为一个程序员,写了那么多java代码,我们想过一个java文件编译之后生成的class文件中都包含乃些内容吗?
说的高大上一点,一个程序员不该满足于会写代码,看懂API,而因该深入代码内部去看底层的东西。。。。
今天我们一起来看—-(我也是第一次学习,深入jvm内部去研究一下class文件,同时也有助于我们理解程序是怎样执行的)
先看一段简单的代码
class JvmOne {
public void say() {
System.out.println("Hello");
}
}
public class Test {
public static void main(String args[]) {
new JvmOne().say();
}
}
编译之后生成class文件,
首先我们来看一下class文件都包含啥—–
class字节码文件也要有一定的规范,详情可见阅读一下jvm规范
魔数—代表了文件为何种格式的文件,其实每一种类型的文件开头都会有一串字符来确定该文件是何种类型的文件,每种格式文件对应的十六进制文件并不是随机排列的,而是有一定规律的。图像文件最好理解了,每个位置显示什么颜色的像素才能将图像=正确显示出来—
举个例子—jpg文件
以上两幅图片用 NotePad打开–
开头字符串是一样的,那为什么不凭借 扩展名呢?因为扩展名很容易被修改,另一个是打开文件后是从头直接翻译的,便于机器能够正确解读文件。
我们接下来再来看 class 文件
版权声明:本文为weixin_54061333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。