當前位置:首頁 » 編程軟體 » idea和javap反編譯

idea和javap反編譯

發布時間: 2025-01-02 05:43:51

A. Intellij IDEA 怎麼向Eclipse一樣在編譯jar文件的時候修改jdk版本

可以試試
在jar包中,用winrar解壓一個類文件,然後在命令行下面輸入
javap -verbose classname
會輸出一些信息,大致如下:
Compiled from "HtmlCrawer.java"
public class org.eagleeye.html.HtmlCrawer extends java.lang.Object
SourceFile: "HtmlCrawer.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // org/eagleeye/html/HtmlCrawer
const #2 = Asciz org/eagleeye/html/HtmlCrawer;
const #3 = class #4; // java/lang/Object
const #4 = Asciz java/lang/Object;
const #5 = Asciz client;

B. 字元拼接你選擇string.format()還是「+」來進行拼接

各位小夥伴在字元串拼接時應該都見過下面這種提示:


內容翻譯:報告 StringBuffer、StringBuilder 或 StringJoiner 的任何用法,這些用法可以用單個 java.lang.String 串聯來替換。使用字元串串聯可以使代碼更短、更簡單。只有當得到的串聯至少與原始代碼一樣高效或更高效時,此檢查才會報告。


大家普遍認知中,字元串拼接要使用 StringBuilder,那為什麼 idea 會建議你是用 「+」 呢,那到底 StringBuilder 和 「+」 有什麼具體區別呢,我們一起來探究一下。



在普通的幾個字元串拼接成一個字元串時,使用 「+」 拼接字元串,實際上,從 JDK5 開始,Java 編譯器就做了優化,使用 「+」 拼接字元串,編譯器編譯後實際就自動優化為使用 StringBuilder。新建測試類 StringTest,分別創建使用 「+」 拼接字元串和使用 StringBuilder 拼接字元串的方法;並新增 Junit 測試用例,分別調用拼接字元串 100000 次,列印耗時。執行 Junit 用例,看耗時統計輸出,差異雖小,考慮執行了 100000 次,每次耗時差異更小,程序執行有各種因素影響執行效率,基本一致。從 class 文件所在目錄,執行 javap -c StringTest.class,對 class 文件進行反編譯,查看編譯後的代碼差異。從圖上可以看出兩種拼接方法反編譯後完全一樣,執行效率自然也是一樣的。既然執行效率一樣,從代碼簡潔利於閱讀考慮,推薦使用 「+」 拼接字元串。



而在循環拼接一個字元串時,雖然 「+」 拼接字元串編譯後也會變成 StringBuilder,但是每次循環處理都會 new 一個 StringBuilder 對象,耗時會大大增加。直接使用 StringBuilder,new 一次就可以了,效率相對高。新增 2 個 Junit 測試用例,循環拼接 10000 次拼接一個字元串,執行 Junit 用例,看耗時統計輸出,差異明顯。



總結來說:



  • 單純字元串拼接使用 「+」,更快更簡潔。

  • 循環拼接時使用 「+」 拼接字元串效率較低,推薦使用 StringBuilder。



作者:京東零售 姜波 來源:京東雲開發者社區 轉載請註明來源

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:710
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:972
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:681
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:833
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:741
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1081
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:312
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:192
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:879
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:837