下面是我用javap来反组译程序1的示范: c:> javap -c -classpath . singleton compiled from mymain.java class singleton extends java.lang.object { public static int counter1; public static int counter2; public static singleton getinstance(); static {}; } method singleton() 0 aload_0 1 invokespecial #1 4 getstatic #2 7 iconst_1 8 iadd 9 putstatic #2 12 getstatic #3 15 iconst_1 16 iadd 17 putstatic #3 20 return method singleton getinstance() 0 getstatic #4 3 areturn method static {} 0 new #5 3 dup 4 invokespecial #6 7 putstatic #4 10 iconst_0 11 putstatic #3 14 return 其实java的syntactic sugar并不算多,c#的syntactic sugar才真的是无所不在,也因此c#的初学者更容易犯了“全世界所有程序员都会犯的错误”。 许多c#的书都会一边介绍c#语法,一边介绍编译之后msil(.net的中间语言,类似java的bytecode)的结果,然而java的书却鲜少这么做。 虽说是“全世界所有程序员都会犯的错误”,但是这不代表你犯了此错误之后,仍可以“抬头挺胸、理直气壮”。只要有心,其实这一类的错误仍是可以避免的。
闽公网安备 35060202000074号