jad和Java Decompiler的小小不同
今天用Java Decompiler反編譯一個(gè)類發(fā)現(xiàn)其中字符串連加的代碼反編譯的結(jié)果和jad的不同。源碼一般somestr = "a" + "b" + "c" + "d" ....;
jad反編譯過來會(huì)自動(dòng)生成一個(gè)StringBuffer,然后把各個(gè)子串a(chǎn)ppend到一起。如:
somestr = (new StringBuilder(String.valueOf("a"))).append("b").append("c").append("d")....).toString();
Java Decompiler反編譯的代碼基本上和原來一樣,有字節(jié)碼查看工具看出,編譯器確實(shí)對(duì)字符串相加做了優(yōu)化。請(qǐng)?jiān)趀clipse使用byte outline插件查看。但是有一種情況是例外的,如:
somestr = "a" + "b";
somestr += "c" + "d";
編譯器會(huì)為每一條語句建立一個(gè)StringBuilder,像上面的情況請(qǐng)把兩句合并成一句。
posted on 2009-03-10 11:25 Eric Song 閱讀(1157) 評(píng)論(2) 編輯 收藏 所屬分類: Java