當前位置:首頁 » 編程軟體 » 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。



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

熱點內容
wemall微商城源碼 發布:2025-05-14 22:15:20 瀏覽:802
隆地優選交易密碼是什麼 發布:2025-05-14 21:53:23 瀏覽:93
強酸強鹼存儲櫃 發布:2025-05-14 21:45:16 瀏覽:563
車輛參數配置包括什麼 發布:2025-05-14 21:31:03 瀏覽:163
怎麼引入安卓項目 發布:2025-05-14 21:26:39 瀏覽:824
游戲輔編程 發布:2025-05-14 21:18:49 瀏覽:687
三菱plc一段二段密碼什麼意思 發布:2025-05-14 21:17:16 瀏覽:528
電腦開機密碼忘記了怎麼破解 發布:2025-05-14 21:09:40 瀏覽:57
pythondict格式 發布:2025-05-14 21:09:38 瀏覽:886
落葉片拍攝腳本 發布:2025-05-14 20:40:49 瀏覽:799