混淆代碼 是為了防止class文件被反編譯用的 但是程序的功能還是正常的 和你正常運(yùn)行一樣
濟(jì)陽(yáng)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),濟(jì)陽(yáng)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為濟(jì)陽(yáng)成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的濟(jì)陽(yáng)做網(wǎng)站的公司定做!
如果連變量名都混淆了,就是說(shuō)所有有具體意義的英文變量名都用a,b,c,x,y等等來(lái)表示,那這是不可能還原的,因?yàn)殡娔X也不可能知道你這個(gè)a實(shí)際上代表了你的年齡而那個(gè)c代表了你老婆的胸圍!
但如果只是個(gè)事混淆,那網(wǎng)上倒有不少工具可以格式化源代碼!自己搜一搜吧!推薦一款編輯器,IntelliJ,很不錯(cuò),值得一提的是,我用過(guò)的眾多編輯器中,這款編輯器的代碼格式化功能最強(qiáng)大!
static 是靜態(tài)聲明,所以會(huì)先執(zhí)行Employee.id的時(shí)候,會(huì)先執(zhí)行static的腳本,就是id 的默認(rèn)賦值和靜態(tài)塊的執(zhí)行,即打印那個(gè)static_block
所以流程是。賦值id,打印static_block;那上面的代碼就是打印static_block 和Main:0
//哈哈,感覺(jué)這道題真心好啊。不知道樓主是從哪里看到的。
//首先這道題樓主要明白以下兩點(diǎn):
//1:繼承時(shí),子類會(huì)隱藏父類相同的方法,要調(diào)用父類方法就必須使用super關(guān)鍵字。
//2:向上轉(zhuǎn)型時(shí),子類會(huì)丟失和父類不同的方法,可以使用父類的不同名的所有方法。
public?class?PolyDemo09{
public?static?void?main(String[]?args){
A?a1?=?new?A();
A?a2?=?new?B();//B類型向上轉(zhuǎn)型丟失與A類不同方法
B?b?=?new?B();?
C?c?=?new?C();
D?d?=?new?D();
System.out.println("⑴????"?+?a1.show(b));//B類的父類是A,所以A?and?A
System.out.println("⑵????"?+?a1.show(c));?//C類父類的父類是A,D和他是同級(jí)。所以A?and?A
System.out.println("⑶????"?+?a1.show(d));//D類方法有,所以不會(huì)向上轉(zhuǎn)型,所以A?and?D
System.out.println("⑷????"?+?a2.show(b));?/*注意這時(shí)候a2的兩個(gè)方法其實(shí)是
public?String?show(D?obj)?{
return?("A?and?D");
}
public?String?show(A?obj)?{
return?("B?and?A");
}??B的父類是A,所以B?and?A?
*/
/**/???????????????????????????????????????????????????????????
System.out.println("⑸????"?+?a2.show(c));//C的父類的父類是A,所以B?and?A;
System.out.println("⑹????"?+?a2.show(d));??//D有對(duì)應(yīng)方法,所以A?and?D
System.out.println("⑺????"?+?b.show(b));?/*這個(gè)就是繼承了,繼承除了隱藏父類中和子類同名的方法外,在子類中可以直接使用父類的方法。所以B?and?B
所以就變成了
public?String?show(D?obj)?{
return?("A?and?D");
}
public?String?show(B?obj)?{
return?("B?and?B");
}
public?String?show(A?obj)?{
return?("B?and?A");
*/
System.out.println("⑻????"?+?b.show(c));?//C?的父類是B,所以B?and?B
System.out.println("⑼????"?+?b.show(d));//D有相應(yīng)方法,所以A?and?D
}
}
class?A?{
public?String?show(D?obj)?{
return?("A?and?D");
}
public?String?show(A?obj)?{
return?("A?and?A");
}
}
class?B?extends?A?{
public?String?show(B?obj)?{
return?("B?and?B");
}
public?String?show(A?obj)?{
return?("B?and?A");
}
}
class?C?extends?B?{
}
class?D?extends?B?{
}
1)盡量指定類、方法的final修飾符。帶有final修飾符的類是不可派生的,Java編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對(duì)于提升Java運(yùn)行效率作用重大,此舉能夠使性能平均提高50%。
2)盡量重用對(duì)象。由于Java虛擬機(jī)不僅要花時(shí)間生成對(duì)象,以后可能還需要花時(shí)間對(duì)這些對(duì)象進(jìn)行垃圾回收和處理,因此生成過(guò)多的對(duì)象將會(huì)給程序的性能帶來(lái)很大的影響。
3)盡可能使用局部變量。調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆中創(chuàng)建速度較慢。
4)慎用異常。異常對(duì)性能不利,只要有異常被拋出,Java虛擬機(jī)就必須調(diào)整調(diào)用堆棧,因?yàn)樵谔幚磉^(guò)程中創(chuàng)建了一個(gè)新的對(duì)象。異常只能用于錯(cuò)誤處理,不應(yīng)該用來(lái)控制程序流程。
5)乘法和除法使用移位操作。用移位操作可以極大地提高性能,因?yàn)樵谟?jì)算機(jī)底層,對(duì)位的操作是最方便、最快的,但是移位操作雖然快,可能會(huì)使代碼不太好理解,因此最好加上相應(yīng)的注釋。
6)盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用 Hashtable、Vector、StringBuffer,后三者由于使用同步機(jī)制而導(dǎo)致了性能開(kāi)銷。
盡量在合適的場(chǎng)合使用單例。使用單例可以減輕加載的負(fù)擔(dān)、縮短加載的時(shí)間、提高加載的效率,但并不是所有地方都適用于單例。
第一個(gè)if是判斷searchkey是不是空的,如果不是空的,就追加到name字段作為查詢條件,like模糊查詢
接著第二個(gè)if判斷如果status的值不為空,就追加到status作為條件
如果status為空,走else分支,從userContext中獲取到employee對(duì)象,接著判斷,如果它的角色不是manager的話
把這個(gè)對(duì)象的id拿出來(lái),作為seller.Id的條件進(jìn)行查詢
package?test2;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Set;
public?class?JavaCodeAnalyzer?{
public?static?void?analyze(File?file)?throws?IOException{
//FileOutputStream?fos?=?new?FileOutputStream("F;"+File.separator+"result.txt");
if(!(file.getName().endsWith(".txt")||file.getName().endsWith(".java"))){
System.out.println("輸入的分析文件格式不對(duì)!");
}
InputStream?is=?new?FileInputStream(file);
BufferedReader?br=?new?BufferedReader(new?InputStreamReader(is));
String?temp;
int?count=0;
int?countSpace=0;
int?countCode=0;
int?countDesc=0;
MapString,?Integer?map?=?getKeyWords();
while((temp=br.readLine())!=null){
countKeys(temp,?map);
count++;
if(temp.trim().equals("")){
countSpace++;
}else?if(temp.trim().startsWith("/*")||temp.trim().startsWith("http://")){
countDesc++;
}else{
countCode++;
}
}
System.out.printf("代碼行數(shù):"+countCode+"占總行數(shù)的%4.2f\n",(double)countCode/count);
System.out.printf("空行數(shù):"+countSpace+"占總行數(shù)的%4.2f\n",(double)countSpace/count);
System.out.printf("注釋行數(shù):"+countDesc+"占總行數(shù)的%4.2f\n",(double)countDesc/count);
System.out.println("總行數(shù):"+count);
System.out.println("出現(xiàn)最多的5個(gè)關(guān)鍵字是:");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}
public?static?void?main(String[]?args)?{
getKeyWords();
File?file?=?new?File("F://Test.java");
try?{
analyze(file);
}?catch?(IOException?e)?{
//?TODO?自動(dòng)生成?catch?塊
e.printStackTrace();
}
}
public?static?MapString,Integer?getKeyWords(){
MapString,Integer?map?=?new?HashMapString,?Integer();
String[]keywords?=?{"abstract","assert","boolean","break","byte","case","catch","char","class","continue","default","do","double","else","enum","extends","final","finally","float","for","if","implements","import","instanceof","int","interface","long","native","new","package","private","protected","public","return","????strictfp","short","static","super","????switch","synchronized","this","throw","throws","transient","try","void","volatile","while","goto","const"};
for(String?s:keywords){
map.put(s,?0);
}
return?map;
}
public?static?void?countKeys(String?s,MapString,Integer?map){
SetString?keys?=?map.keySet();
for(String?ss:keys){
if(s.indexOf(ss)!=-1){
map.put(ss,?map.get(ss)+1);
}
}
}
}
上班沒(méi)啥時(shí)間了,還有點(diǎn)沒(méi)寫完,你在想想。
當(dāng)前標(biāo)題:java代碼分析,java代碼分析開(kāi)源
當(dāng)前網(wǎng)址:http://sd-ha.com/article38/phhjpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、軟件開(kāi)發(fā)、面包屑導(dǎo)航、企業(yè)網(wǎng)站制作、網(wǎng)站策劃、手機(jī)網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)