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



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

熱點內容
linux線程間通信 發布:2025-03-10 22:15:02 瀏覽:853
python線程數量控制 發布:2025-03-10 22:14:28 瀏覽:449
壓縮軟體流程 發布:2025-03-10 22:00:43 瀏覽:301
安卓哪個國家的品牌好 發布:2025-03-10 21:53:16 瀏覽:12
ftp字元集錦 發布:2025-03-10 21:37:00 瀏覽:77
如何提取腳本按鍵 發布:2025-03-10 21:29:04 瀏覽:221
遼寧省dns伺服器怎麼填物理機 發布:2025-03-10 21:25:05 瀏覽:787
雲計算機伺服器區別 發布:2025-03-10 21:10:21 瀏覽:235
古代錦衣衛需要哪些配置 發布:2025-03-10 21:06:17 瀏覽:618
ps樣式在的文件夾 發布:2025-03-10 20:50:07 瀏覽:614