源码
package com.wind.jvm.main;
/**
* @author 魏超
* @date 2023/6/21
*/
public class TestClass {
private int m;
public int inc() {
return m + 1;
}
}
javac TestClass.java => 同目录生成.class文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfzI1BM4-1687750073860)(C:\Users\weichao01\Desktop\image-20230626112350497.png)]
分析过程
> 最后控制台验证是否正确(需提前cd到class路径:eg:
> cd D:\J_WorkSpace\mytarget\JVMLearning\JVM\jvm-main\com\wind\jvm\main
> javap -verbose TestClass
>
> 警告: 二进制文件TestClass包含com.wind.jvm.main.TestClass
> Classfile /D:/J_WorkSpace/mytarget/JVMLearning/JVM/jvm-main/com/wind/jvm/main/TestClass.class
> Last modified 2023-6-25; size 293 bytes
> MD5 checksum c9516c975f389a8eb9257f48d296d970
> Compiled from "TestClass.java"
> public class com.wind.jvm.main.TestClass
> minor version: 0
> major version: 52
> flags: ACC_PUBLIC, ACC_SUPER
> Constant pool:
> #1 = Methodref #4.#15 // java/lang/Object."<init>":()V
> #2 = Fieldref #3.#16 // com/wind/jvm/main/TestClass.m:I
> #3 = Class #17 // com/wind/jvm/main/TestClass
> #4 = Class #18 // java/lang/Object
> #5 = Utf8 m
> #6 = Utf8 I
> #7 = Utf8 <init>
> #8 = Utf8 ()V
> #9 = Utf8 Code
> #10 = Utf8 LineNumberTable
> #11 = Utf8 inc
> #12 = Utf8 ()I
> #13 = Utf8 SourceFile
> #14 = Utf8 TestClass.java
> #15 = NameAndType #7:#8 // "<init>":()V
> #16 = NameAndType #5:#6 // m:I
> #17 = Utf8 com/wind/jvm/main/TestClass
> #18 = Utf8 java/lang/Object
> {
> public com.wind.jvm.main.TestClass();
> 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 7: 0
>
> public int inc();
> descriptor: ()I
> flags: ACC_PUBLIC
> Code:
> stack=2, locals=1, args_size=1
> 0: aload_0
> 1: getfield #2 // Field m:I
> 4: iconst_1
> 5: iadd
> 6: ireturn
> LineNumberTable:
> line 11: 0
> }
> SourceFile: "TestClass.java"