HelloWorld是我们写下的第一个程序,源码如下:
public class HelloWorld { public static void main(String[] args) { System.out.
println("Hello World!"); } }
若干年之后我们回过头来再看这个程序,我们不再会觉得这个程序简单。

任何一个Java程序要运行,我们肯定是需要编译成字节码,那么这个字节码,从大的方面来说一般都是要有以下几个信息:类的基本信息,常量池,类方法的定义,包括虚拟机指令。我们可以看一下,字节码我们比较难看懂,我们使用jdk提供的工具来反编译,会生成一些助记符。
javap -v HelloWorld.class
-v会输出详情信息,后面一篇文章专门解读这个字节码
Classfile /Users/zhuxuemin/IdeaProjects/jvm_code/out/production/jvm_code/
HelloWorld.class Last modified 2020-1-11; size 534 bytes MD5 checksum 9
b61f92903fbfa20a9aaee1114966fc1 Compiled from"HelloWorld.java" public class
HelloWorld minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER
Constant pool: #1 = Methodref #6.#20 // java/lang/Object."<init>":()V #2 =
Fieldref #21.#22 // java/lang/System.out:Ljava/io/PrintStream; #3 = String #23
// Hello World! #4 = Methodref #24.#25 //
java/io/PrintStream.println:(Ljava/lang/String;)V #5 = Class #26 // HelloWorld #
6 = Class #27 // java/lang/Object #7 = Utf8 <init> #8 = Utf8 ()V #9 = Utf8 Code
#10 = Utf8 LineNumberTable #11 = Utf8 LocalVariableTable #12 = Utf8 this #13 =
Utf8 LHelloWorld; #14 = Utf8 main #15 = Utf8 ([Ljava/lang/String;)V #16 = Utf8
args #17 = Utf8 [Ljava/lang/String; #18 = Utf8 SourceFile #19 = Utf8 HelloWorld.
java #20 = NameAndType #7:#8 // "<init>":()V #21 = Class #28 // java/lang/System
#22 = NameAndType #29:#30 // out:Ljava/io/PrintStream; #23 = Utf8 Hello World!
#24 = Class #31 // java/io/PrintStream #25 = NameAndType #32:#33 //
println:(Ljava/lang/String;)V #26 = Utf8 HelloWorld #27 = Utf8 java/lang/Object
#28 = Utf8 java/lang/System #29 = Utf8 out #30 = Utf8 Ljava/io/PrintStream; #31
= Utf8 java/io/PrintStream #32 = Utf8 println #33 = 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."<init>":()V 4: return LineNumberTable: line 4: 0
LocalVariableTable: Start Length Slot Name Signature 0 5 0 this LHelloWorld;
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:Ljava/io/PrintStream; 3: ldc #3 // String
Hello World! 5: invokevirtual #4 // Method
java/io/PrintStream.println:(Ljava/lang/String;)V 8: return LineNumberTable:
line6: 0 line 7: 8 LocalVariableTable: Start Length Slot Name Signature 0 9 0
args[Ljava/lang/String; } SourceFile: "HelloWorld.java"

技术
©2019-2020 Toolsou All rights reserved,
MyBatis 新增数据 成功 返回 自增主键ID值用C语言做很简单的飞机游戏苹果不送充填器耳机真为环保?可能还是为了赚钱吧一个名叫“讨火车”的小村子 终于把火车讨来了使用easyPOI导入Excel数据QT:清空指定文件夹内的所有文件及目录json反斜杠问题3种Python数据结构,13种创建方法,这个总结,超赞!访客手机抓取方法改主意!特斯拉开始向欧洲市场交付中国造Model 3