真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼分析,java代碼分析開源

如何分析經(jīng)過混淆后的java代碼

混淆代碼 是為了防止class文件被反編譯用的 但是程序的功能還是正常的 和你正常運行一樣

濟陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),濟陽網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為濟陽成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的濟陽做網(wǎng)站的公司定做!

如果連變量名都混淆了,就是說所有有具體意義的英文變量名都用a,b,c,x,y等等來表示,那這是不可能還原的,因為電腦也不可能知道你這個a實際上代表了你的年齡而那個c代表了你老婆的胸圍!

但如果只是個事混淆,那網(wǎng)上倒有不少工具可以格式化源代碼!自己搜一搜吧!推薦一款編輯器,IntelliJ,很不錯,值得一提的是,我用過的眾多編輯器中,這款編輯器的代碼格式化功能最強大!

java分析代碼執(zhí)行過程,輸出結(jié)果

static 是靜態(tài)聲明,所以會先執(zhí)行Employee.id的時候,會先執(zhí)行static的腳本,就是id 的默認(rèn)賦值和靜態(tài)塊的執(zhí)行,即打印那個static_block

所以流程是。賦值id,打印static_block;那上面的代碼就是打印static_block 和Main:0

誰能幫我把這個java代碼分析一下我被繞暈了

//哈哈,感覺這道題真心好啊。不知道樓主是從哪里看到的。

//首先這道題樓主要明白以下兩點:

//1:繼承時,子類會隱藏父類相同的方法,要調(diào)用父類方法就必須使用super關(guān)鍵字。

//2:向上轉(zhuǎn)型時,子類會丟失和父類不同的方法,可以使用父類的不同名的所有方法。

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和他是同級。所以A?and?A

System.out.println("⑶????"?+?a1.show(d));//D類方法有,所以不會向上轉(zhuǎn)型,所以A?and?D

System.out.println("⑷????"?+?a2.show(b));?/*注意這時候a2的兩個方法其實是

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有對應(yīng)方法,所以A?and?D

System.out.println("⑺????"?+?b.show(b));?/*這個就是繼承了,繼承除了隱藏父類中和子類同名的方法外,在子類中可以直接使用父類的方法。所以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?{

}

Java代碼如何優(yōu)化?從哪些方面入手?分析?

1)盡量指定類、方法的final修飾符。帶有final修飾符的類是不可派生的,Java編譯器會尋找機會內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對于提升Java運行效率作用重大,此舉能夠使性能平均提高50%。

2)盡量重用對象。由于Java虛擬機不僅要花時間生成對象,以后可能還需要花時間對這些對象進行垃圾回收和處理,因此生成過多的對象將會給程序的性能帶來很大的影響。

3)盡可能使用局部變量。調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實例變量等,都在堆中創(chuàng)建速度較慢。

4)慎用異常。異常對性能不利,只要有異常被拋出,Java虛擬機就必須調(diào)整調(diào)用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應(yīng)該用來控制程序流程。

5)乘法和除法使用移位操作。用移位操作可以極大地提高性能,因為在計算機底層,對位的操作是最方便、最快的,但是移位操作雖然快,可能會使代碼不太好理解,因此最好加上相應(yīng)的注釋。

6)盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用 Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導(dǎo)致了性能開銷。

盡量在合適的場合使用單例。使用單例可以減輕加載的負(fù)擔(dān)、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例。

java代碼解讀

第一個if是判斷searchkey是不是空的,如果不是空的,就追加到name字段作為查詢條件,like模糊查詢

接著第二個if判斷如果status的值不為空,就追加到status作為條件

如果status為空,走else分支,從userContext中獲取到employee對象,接著判斷,如果它的角色不是manager的話

把這個對象的id拿出來,作為seller.Id的條件進行查詢

java源代碼分析 實在是不太會,求高手教教我。

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("輸入的分析文件格式不對!");

}

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個關(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?自動生成?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);

}

}

}

}

上班沒啥時間了,還有點沒寫完,你在想想。


網(wǎng)頁題目:java代碼分析,java代碼分析開源
文章地址:http://weahome.cn/article/phhjpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部