Skip to content

Instantly share code, notes, and snippets.

@kedarmhaswade
Created September 25, 2014 21:50
Show Gist options
  • Save kedarmhaswade/344addc9a1d1bd21dc45 to your computer and use it in GitHub Desktop.
Save kedarmhaswade/344addc9a1d1bd21dc45 to your computer and use it in GitHub Desktop.
Disassembly of Stringy.java
Stringy.java
-------------
class Stringy {
public static void main(String[] args) {
String s = new StringBuilder().append("a").append("b").append("c").toString();
}
}
javap -c -all Stringy:
----------------------
Classfile /tmp/Stringy.class
Last modified Sep 25, 2014; size 455 bytes
MD5 checksum 8e7b643384867b615b3b0f1eb643ffb5
Compiled from "Stringy.java"
class Stringy
SourceFile: "Stringy.java"
minor version: 0
major version: 51
flags: ACC_SUPER
Constant pool:
#1 = Methodref #10.#19 // java/lang/Object."<init>":()V
#2 = Class #20 // java/lang/StringBuilder
#3 = Methodref #2.#19 // java/lang/StringBuilder."<init>":()V
#4 = String #21 // a
#5 = Methodref #2.#22 // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#6 = String #23 // b
#7 = String #24 // c
#8 = Methodref #2.#25 // java/lang/StringBuilder.toString:()Ljava/lang/String;
#9 = Class #26 // Stringy
#10 = Class #27 // java/lang/Object
#11 = Utf8 <init>
#12 = Utf8 ()V
#13 = Utf8 Code
#14 = Utf8 LineNumberTable
#15 = Utf8 main
#16 = Utf8 ([Ljava/lang/String;)V
#17 = Utf8 SourceFile
#18 = Utf8 Stringy.java
#19 = NameAndType #11:#12 // "<init>":()V
#20 = Utf8 java/lang/StringBuilder
#21 = Utf8 a
#22 = NameAndType #28:#29 // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#23 = Utf8 b
#24 = Utf8 c
#25 = NameAndType #30:#31 // toString:()Ljava/lang/String;
#26 = Utf8 Stringy
#27 = Utf8 java/lang/Object
#28 = Utf8 append
#29 = Utf8 (Ljava/lang/String;)Ljava/lang/StringBuilder;
#30 = Utf8 toString
#31 = Utf8 ()Ljava/lang/String;
{
Stringy();
flags:
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 1: 0
public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
0: new #2 // class java/lang/StringBuilder
3: dup
4: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
7: ldc #4 // String a
9: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: ldc #6 // String b
14: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: ldc #7 // String c
19: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
25: astore_1
26: return
LineNumberTable:
line 3: 0
line 4: 26
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment