美文网首页
Java编译生成字节码-2020-10-12

Java编译生成字节码-2020-10-12

作者: 中一唐 | 来源:发表于2020-10-12 23:31 被阅读0次

javap -verbose Hello

Java代码:

<pre><code>public class Hello {

        public static void main(String[] args) {

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

        }

}</code></pre>

生成的字节码如下:

```Classfile /Users/jessen/learning/JAVA-000/Week_01/demo1/Hello.class

  Last modified 2020-10-12; size 415 bytes

  MD5 checksum f78738196756e74f31907b064c1ee653

  Compiled from "Hello.java"

public class Hello

  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/PrintStream;

   #3 = String            #18            // hello world

   #4 = Methodref          #19.#20        // java/io/PrintStream.println:(Ljava/lang/String;)V

   #5 = Class              #21            // Hello

   #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              Hello.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              Hello

  #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 Hello();

    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 2: 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:Ljava/io/PrintStream;

         3: ldc          #3                  // String hello world

         5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V

         8: return

      LineNumberTable:

        line 4: 0

        line 5: 8

}

SourceFile: "Hello.java"```

相关文章

  • 03 java字节码文件

    java源码经过编译,生成class字节码文件,JVM加载class文件执行。字节码文件将java语言与JVM解耦...

  • JVM

    java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过J...

  • Java字节码

    Java字节码 编辑.java文件,生成字节码文件 反编译字节码文件 源代码中的各种变量,关键字和运算符号的语义最...

  • javap命令解析

    一、javap是什么?javap是将字节码进行反编译(与javac对应),可以查看java编译器为我们生成的字节码...

  • Java 虚拟机内存区域的划分

    1. Java程序的执行过程 Java源文件(.java) 首先要经过 Java编译器 编译生成 Java字节码文...

  • java程序运行原理分析

    什么是class文件 是jvm编译java代码后生成的字节码文件,包含java程序执行的字节码;数据严格按照格式紧...

  • java Day01

    Day01 Java编译过程 1 编译期:java源文件经过编译,生成.class字节码文件 2 运行期 JVM加...

  • Java学习心得(三)

    一、Java 的跨平台性源文件(.java)经过编译器(javac)编译后生成.class文件(字节码文件),这个...

  • Java编译生成字节码-2020-10-12

    javap -verbose Hello Java代码: public class Hello { pub...

  • Java00_开发准备

    1. Java语言的平台无关性 1)Java语言写的源文件(.java),经Java编译器编译,生成字节码文件(也...

网友评论

      本文标题:Java编译生成字节码-2020-10-12

      本文链接:https://www.haomeiwen.com/subject/nokmpktx.html