.java怎么class_java .class文件怎么看?

有时候为了研究Javac的原理,要去看看class文件的内容是如何组织的,这时候很有必要查看class文件。

fdd23bc78449d69e82755757f46b2aae.png

java class文件怎么看?

查看class文件方法有很多种,这里推荐使用JDK自带的javap工具。

首先建立如下源码:public class HelloWorld{

public static void main(String[] args){

System.out.println("hello world!");

}

}

使用javac编译器把源文件编译好,再接着使用javap工具查看class文件,命令如下javap -verbose HelloWorld

这是DOS窗口的运行结果复制出来如下图:F:\>javac HelloWorld.java

F:\>javap -verbose HelloWorld

Classfile /F:/HelloWorld.class

Last modified 2017-12-24; size 426 bytes

MD5 checksum 4efac412ef483c8a3fe7489c87d15c8c

Compiled from "HelloWorld.java"

public class HelloWorld

minor version: 0

major version: 52

flags: ACC_PUBLIC, ACC_SUPER

Constant pool:

#1 = Methodref #6.#15 // java/lang/Object."":()V

#2 = Fieldref #16.#17 // java/lang/System.out:Ljava/io/Print

Stream;

#3 = String #18 // hello world!

#4 = Methodref #19.#20 // java/io/PrintStream.println:(Ljava/

lang/String;)V

#5 = Class #21 // HelloWorld

#6 = Class #22 // java/lang/Object

#7 = Utf8

#8 = Utf8 ()V

#9 = Utf8 Code

#10 = Utf8 LineNumberTable

#11 = Utf8 main

#12 = Utf8 ([Ljava/lang/String;)V

#13 = Utf8 SourceFile

#14 = Utf8 HelloWorld.java

#15 = NameAndType #7:#8 // "":()V

#16 = Class #23 // java/lang/System

#17 = NameAndType #24:#25 // out:Ljava/io/PrintStream;

#18 = Utf8 hello world!

#19 = Class #26 // java/io/PrintStream

#20 = NameAndType #27:#28 // println:(Ljava/lang/String;)V

#21 = Utf8 HelloWorld

#22 = Utf8 java/lang/Object

#23 = Utf8 java/lang/System

#24 = Utf8 out

#25 = Utf8 Ljava/io/PrintStream;

#26 = Utf8 java/io/PrintStream

#27 = Utf8 println

#28 = Utf8 (Ljava/lang/String;)V

{

public HelloWorld();

descriptor: ()V

flags: ACC_PUBLIC

Code:

stack=1, locals=1, args_size=1

0: aload_0

1: invokespecial #1 // Method java/lang/Object."

":()V

4: return

LineNumberTable:

line 1: 0

public static void main(java.lang.String[]);

descriptor: ([Ljava/lang/String;)V

flags: ACC_PUBLIC, ACC_STATIC

Code:

stack=2, locals=1, args_size=1

0: getstatic #2 // Field java/lang/System.out:Ljav

a/io/PrintStream;

3: ldc #3 // String hello world!

5: invokevirtual #4 // Method java/io/PrintStream.prin

tln:(Ljava/lang/String;)V

8: return

LineNumberTable:

line 3: 0

line 4: 8

}

SourceFile: "HelloWorld.java"

F:\>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值