| package debug; public class Test { int x = 0; String s = "123"; { String s1 = "456"; //if(1==1) //throw new RuntimeException(); } public Test(){ String ss = "789"; } public static void main(String[] args) { new Test(); } } javap -c debug.Test的结果: Compiled from "Test.java" public class debug.Test extends java.lang.Object{ int x; java.lang.String s; public debug.Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: iconst_0 6: putfield #2; //Field x:I 9: aload_0 10: ldc #3; //String 123 12: putfield #4; //Field s:Ljava/lang/String; 15: ldc #5; //String 456 17: astore_1 18: ldc #6; //String 789 20: astore_1 21: return public static void main(java.lang.String[]); Code: 0: new #7; //class debug/Test 3: dup 4: invokespecial #8; //Method "":()V 7: pop 8: return } |
| package debug; public class Test { String s1 = rt("s1"); String s2 = "s2"; public Test(){ s1 = "s1"; } public Test(String s){ this(); if(1==1) throw new Runtime(); } String rt(String s){ return s; } public static void main(String[] args) { new Test(""); } } |
| Compiled from "Test.java" public class debug.Test extends java.lang.Object{ java.lang.String s1; java.lang.String s2; public debug.Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: aload_0 6: ldc #2; //String s1 8: invokevirtual #3; //Method rt:(Ljava/lang/String;)Ljava/lang/String; 11: putfield #4; //Field s1:Ljava/lang/String; 14: aload_0 15: ldc #5; //String s2 17: putfield #6; //Field s2:Ljava/lang/String; 20: aload_0 21: ldc #2; //String s1 23: putfield #4; //Field s1:Ljava/lang/String; 26: return public debug.Test(java.lang.String); Code: 0: aload_0 1: invokespecial #7; //Method "":()V 4: new #8; //class java/lang/RuntimeException 7: dup 8: invokespecial #9; //Method java/lang/RuntimeException."":()V 11: athrow java.lang.String rt(java.lang.String); Code: 0: aload_1 1: areturn public static void main(java.lang.String[]); Code: 0: new #10; //class debug/Test 3: dup 4: ldc #11; //String 6: invokespecial #12; //Method "":(Ljava/lang/String;)V 9: pop 10: return } |
| public debug.Test(java.lang.String); Code: 0: aload_0 1: invokespecial #7; //Method "":()V 4: new #8; //class java/lang/RuntimeException 7: dup 8: invokespecial #9; //Method java/lang/RuntimeException."":()V 11: athrow |
| package debug; public class Test { String s1 = rt("s1"); String s2 = "s2"; { String s3 = "s3"; } public Test() { s1 = "s1"; } public Test(String s) { if (1 == 1) throw new RuntimeException(); } String rt(String s) { return s; } public static void main(String[] args) { new Test(""); } } |
| Compiled from "Test.java" public class debug.Test extends java.lang.Object{ java.lang.String s1; java.lang.String s2; public debug.Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: aload_0 6: ldc #2; //String s1 8: invokevirtual #3; //Method rt:(Ljava/lang/String;)Ljava/lang/String; 11: putfield #4; //Field s1:Ljava/lang/String; 14: aload_0 15: ldc #5; //String s2 17: putfield #6; //Field s2:Ljava/lang/String; 20: ldc #7; //String s3 22: astore_1 23: aload_0 24: ldc #2; //String s1 26: putfield #4; //Field s1:Ljava/lang/String; 29: return public debug.Test(java.lang.String); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: aload_0 6: ldc #2; //String s1 8: invokevirtual #3; //Method rt:(Ljava/lang/String;)Ljava/lang/String; 11: putfield #4; //Field s1:Ljava/lang/String; 14: aload_0 15: ldc #5; //String s2 17: putfield #6; //Field s2:Ljava/lang/String; 20: ldc #7; //String s3 22: astore_2 23: new #8; //class java/lang/RuntimeException 26: dup 27: invokespecial #9; //Method java/lang/RuntimeException."":()V 30: athrow java.lang.String rt(java.lang.String); Code: 0: aload_1 1: areturn public static void main(java.lang.String[]); Code: 0: new #10; //class debug/Test 3: dup 4: ldc #11; //String 6: invokespecial #12; //Method "":(Ljava/lang/String;)V 9: pop 10: return } |
| public class Test2 extends Test1 { System.out.print("1"); } Test2(){ System.out.print("2"); } static{ System.out.print("3"); } { System.out.print("4"); } public static void main(String[] args) { new Test2(); } } class Test1 { Test1(){ System.out.print("5"); } static{ System.out.print("6"); } } |