CLASS文件结构

查看16进制格式的ClassFile

  • sublime / notepad
  • IDEA插件 - binEd

class文件内容

  • 新建一个类
public class Test {
}
  • 编译改类,生成class文件,使用sublime打开
cafe babe 0000 0034 0010 0a00 0300 0d07
000e 0700 0f01 0006 3c69 6e69 743e 0100
0328 2956 0100 0443 6f64 6501 000f 4c69
6e65 4e75 6d62 6572 5461 626c 6501 0012
4c6f 6361 6c56 6172 6961 626c 6554 6162
6c65 0100 0474 6869 7301 0019 4c63 6f6d
2f78 6961 6368 772f 6a76 6d74 6573 742f
5465 7374 3b01 000a 536f 7572 6365 4669
6c65 0100 0954 6573 742e 6a61 7661 0c00
0400 0501 0017 636f 6d2f 7869 6163 6877
2f6a 766d 7465 7374 2f54 6573 7401 0010
6a61 7661 2f6c 616e 672f 4f62 6a65 6374
0021 0002 0003 0000 0000 0001 0001 0004
0005 0001 0006 0000 002f 0001 0001 0000
0005 2ab7 0001 b100 0000 0200 0700 0000
0600 0100 0000 0300 0800 0000 0c00 0100
0000 0500 0900 0a00 0000 0100 0b00 0000
0200 0c

观察ByteCode方法

  • JDK自带工具 javap
    javap命令,显示class信息,详细如下:
C:\>javap D:\idea_gitlab_workspace\test111\out\production\test111\com\xiachw\singleton\test.class
Compiled from "test.java"
public class com.xiachw.singleton.test {
  public com.xiachw.singleton.test();
}

C:\>javap -v D:\idea_gitlab_workspace\test111\out\production\test111\com\xiachw\singleton\test.class
Classfile /D:/idea_gitlab_workspace/test111/out/production/test111/com/xiachw/singleton/test.class
  Last modified 2020-3-16; size 279 bytes
  MD5 checksum 397d3394b815cace1c735cf9338410e3
  Compiled from "test.java"
public class com.xiachw.singleton.test
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #3.#13         // java/lang/Object."<init>":()V
   #2 = Class              #14            // com/xiachw/singleton/test
   #3 = Class              #15            // java/lang/Object
   #4 = Utf8               <init>
   #5 = Utf8               ()V
   #6 = Utf8               Code
   #7 = Utf8               LineNumberTable
   #8 = Utf8               LocalVariableTable
   #9 = Utf8               this
  #10 = Utf8               Lcom/xiachw/singleton/test;
  #11 = Utf8               SourceFile
  #12 = Utf8               test.java
  #13 = NameAndType        #4:#5          // "<init>":()V
  #14 = Utf8               com/xiachw/singleton/test
  #15 = Utf8               java/lang/Object
{
  public com.xiachw.singleton.test();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 3: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lcom/xiachw/singleton/test;
}
SourceFile: "test.java"
  • IDEA插件-jclasslib
    先把类编译一下,将光标放到类体上,选择菜单中的 view-> Show Bytecode With Jclasslib,帮你分析class的内容。
    在这里插入图片描述

class文件各部分内容代表内容

在这里插入图片描述

xmind总结class文件各部分内容

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值