public class StringDemo1 { public static void main(String[] args) { String str1 = "aaa" + "bbb"; System.out.println(str1); String str2 = "ccc"; str2 += "ddd"; System.out.println(str2); } }
IDEA を使用してコンパイルされたファイルの内容を表示します:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package jdk.java.lang.string; public class StringDemo1 { public StringDemo1() { } public static void main(String[] args) { String str1 = "aaabbb"; System.out.println(str1); String str2 = "ccc"; str2 = str2 + "ddd"; System.out.println(str2); } }
IDEA によって内容が逆コンパイルされていることがわかり、バイトコードの内容は確認できません。
IDEA でプラグイン jclasslib バイトコード ビューアを検索し、インストールして IDEA を再起動します。
StringDemo1.java ファイルを再度開き、IDEA メニュー バーで [表示] -> [バイトコードの表示] を開くと、バイトコード ファイルの内容が表示されます:
// class version 52.0 (52) // access flags 0x21 public class jdk/java/lang/string/StringDemo1 { // compiled from: StringDemo1.java // access flags 0x1 public <init>()V L0 LINENUMBER 8 L0 ALOAD 0 INVOKESPECIAL java/lang/Object.<init> ()V RETURN L1 LOCALVARIABLE this Ljdk/java/lang/string/StringDemo1; L0 L1 0 MAXSTACK = 1 MAXLOCALS = 1 // access flags 0x9 public static main([Ljava/lang/String;)V L0 LINENUMBER 11 L0 LDC "aaabbb" ASTORE 1 L1 LINENUMBER 12 L1 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ALOAD 1 INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V L2 LINENUMBER 15 L2 LDC "ccc" ASTORE 2 L3 LINENUMBER 16 L3 NEW java/lang/StringBuilder DUP INVOKESPECIAL java/lang/StringBuilder.<init> ()V ALOAD 2 INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; LDC "ddd" INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String; ASTORE 2 L4 LINENUMBER 17 L4 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ALOAD 2 INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V L5 LINENUMBER 18 L5 RETURN L6 LOCALVARIABLE args [Ljava/lang/String; L0 L6 0 LOCALVARIABLE str1 Ljava/lang/String; L1 L6 1 LOCALVARIABLE str2 Ljava/lang/String; L3 L6 2 MAXSTACK = 2 MAXLOCALS = 3 }
#クラス バージョン | |
---|---|
52 | |
51 | |
50 | |
49 | |
48 | |
47 | |
46 | |
45 | ## |
以上がIDEA を使用して Java ファイルのコンパイルされたバイトコード コンテンツを表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。