每個(gè)人都說代碼是程序員手中的一把雕刻刀,是對(duì)他們產(chǎn)品輪廓和細(xì)節(jié)的打磨。

主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、成都響應(yīng)式網(wǎng)站建設(shè)公司、程序開發(fā)、微網(wǎng)站、小程序設(shè)計(jì)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營(yíng)銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。
每個(gè)程序員在代碼優(yōu)化方面需要做的是,即使是每天處理代碼的程序員也有很多關(guān)于他們編寫代碼的問題,所以優(yōu)化很重要。
下面山西山西IT培訓(xùn)為大家介紹代碼優(yōu)化的方法。
1、盡量重用目標(biāo)特別是,使用代表字符串收斂的String目標(biāo)應(yīng)該使用StringBuilder/StringBuffer。
因?yàn)镴ava虛擬機(jī)不僅要花時(shí)間生成目標(biāo),而且可能還需要花時(shí)間檢索和刪除這些目標(biāo),所以山西計(jì)算機(jī)學(xué)院發(fā)現(xiàn)生成太多目標(biāo)會(huì)對(duì)程序的功能產(chǎn)生重大影響。
2、可以運(yùn)用局部變量調(diào)用方法時(shí)傳遞的參數(shù)和調(diào)用中創(chuàng)建的臨時(shí)變量保存在堆棧中的速度更快。
其他變量,如靜態(tài)變量、實(shí)例變量等等,在堆中創(chuàng)建,速度較慢。
此外,山西北大青鳥發(fā)現(xiàn)在堆棧中創(chuàng)建的變量,方法的操作結(jié)束,當(dāng)這些內(nèi)容都消失了,就不需要額定廢物回收。
3、及時(shí)封閉流Java的程序編寫過程中,數(shù)據(jù)庫連接,I/O流操作必須謹(jǐn)慎,應(yīng)用結(jié)束后,應(yīng)該及時(shí)關(guān)閉發(fā)布資源。
因?yàn)樯轿鱦ava培訓(xùn)發(fā)現(xiàn)這些大目標(biāo)的運(yùn)行會(huì)造成大系統(tǒng)支出,稍有不慎就會(huì)導(dǎo)致嚴(yán)重的結(jié)果。
Java代碼的編譯與反編譯
2017-02-21Hollis數(shù)盟
一、什么是編譯
1、利用編譯程序從源語言編寫的源程序產(chǎn)生目標(biāo)程序的過程。
2、用編譯程序產(chǎn)生目標(biāo)程序的動(dòng)作。編譯就是把高級(jí)語言變成計(jì)算機(jī)可以識(shí)別的2進(jìn)制語言,計(jì)算機(jī)只認(rèn)識(shí)1和0,編譯程序把人們熟悉的語言換成2進(jìn)制的。編譯程序把一個(gè)源程序翻譯成目標(biāo)程序的工作過程分為五個(gè)階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯(cuò)誤,給出提示信息。
二、什么是反編譯
計(jì)算機(jī)軟件反向工程(Reverseengineering)也稱為計(jì)算機(jī)軟件還原工程,是指通過對(duì)他人軟件的目標(biāo)程序(可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運(yùn)行方法等設(shè)計(jì)要素,某些特定情況下可能推導(dǎo)出源代碼。反編譯作為自己開發(fā)軟件時(shí)的參考,或者直接用于自己的軟件產(chǎn)品中。
三、Java類的編譯與反編譯
我們?cè)谧畛鯇W(xué)習(xí)Java的時(shí)候,會(huì)接觸到兩個(gè)命令:javac和java,那個(gè)時(shí)候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統(tǒng),使用這些傳統(tǒng)語言寫的程序通常首先被編譯,然后被連接成單獨(dú)的、專門支持特定硬件平臺(tái)和操作系統(tǒng)的二進(jìn)制文件。通常情況下,一個(gè)平臺(tái)上的二進(jìn)制可執(zhí)行文件不能在其他平臺(tái)上工作。而Javaclass文件是可以運(yùn)行在任何支持Java虛擬機(jī)的硬件平臺(tái)和操作系統(tǒng)上的二進(jìn)制文件。
那么反編譯呢,就是通過helloworld.class文件得到j(luò)ava文件(或者說是程序員能看懂的Java文件)
四、什么時(shí)候會(huì)用到反編譯
1、我們只有一個(gè)類的class文件,但是我們又看不懂Java的class文件,那么我們可以把它反編譯成我們可以看得懂的文件。
2、學(xué)習(xí)Java過程中,JDK的每個(gè)版本都會(huì)加入越來越多的語法糖,有些時(shí)候我們想知道Java一些實(shí)現(xiàn)細(xì)節(jié),我們可以借助反編譯。
五、反編譯工具
1、javap
2、Jad:官網(wǎng)(墻裂推薦)
客戶端:
可以在官網(wǎng)下載可執(zhí)行文件,找到對(duì)應(yīng)的操作系統(tǒng)的對(duì)應(yīng)版本,然后進(jìn)行安裝使用。
因?yàn)槲沂褂玫氖莑inux操作系統(tǒng),所以我下載的是Linux版本的工具,這個(gè)工具下載好之后會(huì)有一個(gè)執(zhí)行文件,只要在執(zhí)行文件所在目錄執(zhí)行./jadhelloworld.class就會(huì)在當(dāng)前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼
Eclipse插件:
下載地址在官網(wǎng)下載插件的jar包,然后將jar包放到eclipse的plugins目錄下‘在打開Eclipse,Eclipse-Window-Preferences-Java,此時(shí)你會(huì)發(fā)現(xiàn)會(huì)比原來多了一個(gè)JadClipse的選項(xiàng),單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時(shí)文件的目錄。當(dāng)然在JadClipse下還有一些子選項(xiàng),如Debug,Directives等,按照默認(rèn)配置即可。基本配置完畢后,我們可以查看一下class文件的默認(rèn)打開方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我們可以看到class文件的打開方式有兩個(gè),JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認(rèn)的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼
說到代碼優(yōu)化,每個(gè)人或多或少都掌握一到兩種方法,但是這樣的方法對(duì)提升代碼運(yùn)行效率效果不大,最重要是對(duì)代碼的重視和了解,這樣才能提升代碼的運(yùn)行效率。在進(jìn)行代碼優(yōu)化的過程中,方法是非常重要的,多掌握幾種方法,根據(jù)代碼的不同情況選擇適合的方法進(jìn)行優(yōu)化。下面電腦培訓(xùn)為大家介紹Java代碼優(yōu)化的幾種方法。
1、使用指定類、方法的final修飾符
具有final修飾符的類不可派生。在Java核心API中,有許多最終應(yīng)用程序的例子,例如java.lang.String,整個(gè)類都是final。為類指定final修飾符允許繼承類,并且為方法指定final修飾符允許覆蓋該方法。如果將類指定為final,IT培訓(xùn)認(rèn)為該類的所有方法都是final。Java編譯器將尋找內(nèi)聯(lián)所有最終方法的機(jī)會(huì)。內(nèi)聯(lián)對(duì)于提高Java操作的效率非常重要。這可以將性能平均提高50%。
2、重用對(duì)象
String對(duì)象的使用是非常重要的,StringBuilder/StringBuffer并不是字符串連接。由于Java虛擬機(jī)需要時(shí)間來生成對(duì)象,所以將來垃圾收集和處理這些對(duì)象可能需要一些時(shí)間。因此,生成太多對(duì)象將對(duì)程序的性能產(chǎn)生很大影響。
3、使用局部變量
調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在堆棧中,速度更快。其他變量(如靜態(tài)變量和實(shí)例變量)在堆中創(chuàng)建并且速度較慢。此外,昆明北大青鳥發(fā)現(xiàn)在堆棧中創(chuàng)建的變量,當(dāng)方法完成運(yùn)行時(shí),內(nèi)容消失,不需要進(jìn)行額外的垃圾收集。
4、及時(shí)關(guān)閉流
在Java編程過程中,在執(zhí)行數(shù)據(jù)庫連接和I/O流操作時(shí)要小心。使用后,北大青鳥云南嘉薈校區(qū)官網(wǎng)建議應(yīng)及時(shí)關(guān)閉以釋放資源。因?yàn)檫@些大型物體的操作會(huì)導(dǎo)致系統(tǒng)的大量開銷,稍微粗心會(huì)導(dǎo)致嚴(yán)重的后果。
張小喜告別996 實(shí)現(xiàn)高效編程 減少開發(fā)壓力 開啟Java高效編程之門(完整版高清視頻)百度網(wǎng)盤 ?
鏈接:
提取碼: aizj 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦? ?
若資源有問題歡迎追問~ ?
新聞名稱:java編譯與代碼優(yōu)化 java代碼優(yōu)化的方法和準(zhǔn)則
網(wǎng)站URL:http://chinadenli.net/article12/dojgjdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站、網(wǎng)站設(shè)計(jì)、ChatGPT、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)