亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

javap簡介

2019-11-18 11:51:06
字體:
來源:轉載
供稿:網友

  作者: golder    
  
   也許我們很少會使用到javap工具,因為現在有很多好的反編譯工具,但是我在此介紹這個工具不是使用它進行反編譯,而是查看java編譯器為我們生成的字節碼,通過比較字節碼和源代碼,我們可以發現很多的問題,一個很重要的作用就是了解很多編譯器內部的工作機制,在筆者以前的幾篇文章中就是借助此工具的,本站有這些文章的原文《深入剖析java類的構造方式》和《使用String還是StringBuffer》。
  下面我們通過具體的一個例子來簡單的講講這個工具的作用,你不需要很深入的使用,這個簡單的介紹和簡單的使用就可以使你受益非淺。
  源代碼:
  class StringTest
  {
  public static void main(String[] args)
  {
  String result="";
  result+="ok";
  }
  }
  在反編譯前你當然需要先編譯這個類了:javac -g StringTest.java(使用-g參數是因為要得到下面javap -l時的輸出需要使用此選項)
  編譯完成后,我們在使用不同的選項看看不同的效果:
  
  1、先看看最簡單的不帶參數的情況:javap StringTest:
  
  Compiled from StringTest.java
  class StringTest extends java.lang.Object {
  StringTest();
  public static void main(java.lang.String[]);
  }
  不帶參數的情況將答應類的public信息,包括成員和方法
  從上面的輸出中我們確定了兩個知識:假如類沒有顯示的從其它類派生那么它就是從Object派生;假如沒有為類顯示的申明構造方法,那么編譯器將為之生成一個缺省構造方法(不帶參數的構造方法)
  
  2、javap -c StringTest:
  
  Compiled from StringTest.java
  class StringTest extends java.lang.Object {
  StringTest();
  public static void main(java.lang.String[]);
  }
  Method StringTest()
  0 aload_0
  1 invokespecial #1 <Method java.lang.Object()>
  4 return
  
  Method void main(java.lang.String[])
  0 ldc #2 <String "">
  2 astore_1
  3 new #3 <Class java.lang.StringBuffer>
  6 dup
  7 invokespecial #4 <Method java.lang.StringBuffer()>
  10 aload_1
  11 invokevirtual #5 <Method java.lang.StringBuffer append(java.lang.String)>
  14 ldc #6 <String "ok">
  16 invokevirtual #5 <Method java.lang.StringBuffer append(java.lang.String)>
  19 invokevirtual #7 <Method java.lang.String toString()>
  22 astore_1
  23 return
  帶-p參數將額外的打印字節碼信息
  前面的和不帶參數的輸出一樣,后面的顯示了方法的具體的字節碼,從這個輸出里面我們又可以了解更多的內容,首先是編譯器生成的的缺省構造方法的內容為調用父類的構造方法super()(需要說明的是使用DJ反編譯的源代碼中這個缺省構造方法沒有這個調用,這可能是該反編譯器的一種優化),main()方法的字節碼信息的內容可以參考《使用String還是StringBuffer》一文的敘述。
  
  3、javap -l StringTest :
  
  Compiled from StringTest.java
  class StringTest extends java.lang.Object {
  StringTest();
  public static void main(java.lang.String[]);
  }
  
  Line numbers for method StringTest()
  line 1: 0
  
  Local variables for method StringTest()
  StringTest this pc=0, length=5, slot=0
  
  Line numbers for method void main(java.lang.String[])
  line 5: 0
  line 6: 3
  line 7: 23
  
  Local variables for method void main(java.lang.String[])
  java.lang.String[] args pc=0, length=24, slot=0
  java.lang.String result pc=3, length=20, slot=1
  -l參數將顯示行號和局部變量表
  從上面的輸出中我們可以得到方法中的變量和方法的源代碼對于字節碼信息的,例如對應main()方法,它的變量為輸入參數args以及局部變量result,方法的源代碼的第5行對應字節碼的第0個偏移量,第5行對應字節碼的第3個偏移量,而第7行對應字節碼的第23偏移量(參看javap -c的輸出前面的偏移量),第7行實際是沒有語句的,但是有一個隱含的return,而偏移量23實際對應的也是return調用
  
  4、javap -p StringTest:
  
  Compiled from StringTest.java
  class StringTest extends java.lang.Object {
  StringTest();
  public static void main(java.lang.String[]);
  }
  -p參數將額外的打印PRivate成員和方法的信息,因為這個類沒有因此輸出相同
  
  這幾個參數幾乎就可以構成javap的最常使用的集合,最常用的應該還是-c選項,因為可以打印字節碼的信息,關于這些字節碼的具體涵義在Java 虛擬機規范中定義.

上一篇:Java加密擴展基礎

下一篇:初始化基礎類

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜剧场成人观在线视频免费观看| 日韩在线视频免费观看| 国产精品日韩av| 亚洲va电影大全| 欧美一区二区大胆人体摄影专业网站| 亚洲第一视频网站| 国产69精品99久久久久久宅男| 亚洲国产精品专区久久| 精品久久久一区| 中文字幕日韩精品在线| 欧美激情一区二区三区高清视频| 精品久久久久久久久久国产| 91社影院在线观看| 尤物九九久久国产精品的分类| 亚洲精品免费在线视频| 亚洲最大av在线| 欧美高清激情视频| 亚洲精品色婷婷福利天堂| 日韩视频免费看| xxx欧美精品| 久久精品久久久久久| 日韩av在线直播| 欧美激情xxxx性bbbb| 国产亚洲日本欧美韩国| 亚洲视频一区二区| 色婷婷综合久久久久中文字幕1| 欧美性在线视频| 亚洲欧美制服第一页| 懂色av影视一区二区三区| 亚洲色图35p| 亚洲网站在线看| 欧美亚洲国产另类| 亚洲精品动漫100p| 国产精品久久久| 欧美日韩一区二区精品| 69久久夜色精品国产69乱青草| 韩日精品中文字幕| 久久久久久中文| 欧美精品电影免费在线观看| 成人自拍性视频| 91精品视频在线看| 中文字幕日本欧美| 亚洲裸体xxxx| 久久精品免费播放| 久久伊人色综合| 黑人极品videos精品欧美裸| 国产热re99久久6国产精品| 亚洲国产欧美一区二区丝袜黑人| 亚洲综合中文字幕68页| 久久精品91久久久久久再现| 成人av在线天堂| 在线激情影院一区| 日韩精品有码在线观看| 亚洲日本成人网| 亚洲精品天天看| 成人午夜高潮视频| 国产精品久久久久久亚洲影视| 国产精品视频在线观看| 中文综合在线观看| 亚洲欧美综合图区| 日韩国产精品亚洲а∨天堂免| 欧美亚洲激情视频| 91免费福利视频| 欧美猛少妇色xxxxx| 在线视频精品一| 国产精品一区=区| 国内精品久久久久| 国产在线精品一区免费香蕉| 美女精品视频一区| 欧美一级在线播放| 精品久久久久久| 日韩高清电影免费观看完整| 亚洲男人天堂久| 92福利视频午夜1000合集在线观看| 日韩欧美在线一区| 精品夜色国产国偷在线| 国产91精品久久久久| 亚洲伊人久久大香线蕉av| 奇米成人av国产一区二区三区| 国产69久久精品成人| 国产精品看片资源| 日韩欧美有码在线| 国产精品r级在线| 热99精品里视频精品| 疯狂做受xxxx欧美肥白少妇| 欧美视频在线观看免费网址| 国产亚洲福利一区| 69国产精品成人在线播放| 欧美精品video| 成人一区二区电影| 欧美日韩亚洲国产一区| 欧美日韩国内自拍| 日韩欧美第一页| 欧美激情免费在线| 久久99久久99精品免观看粉嫩| 国产欧美精品一区二区三区-老狼| 亚洲成色777777在线观看影院| 欧美激情精品在线| 日韩男女性生活视频| 日韩电影大片中文字幕| 欧美日韩一区二区精品| 欧美激情免费看| 国产精品日韩av| 国产午夜精品一区理论片飘花| 亚洲精品综合久久中文字幕| 久久久久久久一区二区三区| 国产97在线|亚洲| 久久青草福利网站| 亚洲国产高清自拍| 亚洲色图国产精品| 亚洲色图在线观看| 亚洲精品久久久久中文字幕欢迎你| 欧美大胆a视频| 亚洲美女喷白浆| 日韩电影在线观看永久视频免费网站| 一本一本久久a久久精品牛牛影视| 日韩在线视频二区| 欧美国产第一页| 中文字幕不卡在线视频极品| 色婷婷久久av| 中文字幕精品av| 97免费中文视频在线观看| 青草青草久热精品视频在线观看| 日韩视频免费大全中文字幕| 91久久国产综合久久91精品网站| 日韩在线观看免费网站| 欧美日韩国产成人在线| 欧美成人合集magnet| 国产成人福利视频| 久久久久久国产精品三级玉女聊斋| 欧美精品xxx| 伊人av综合网| 正在播放亚洲1区| 日日骚av一区| 97精品一区二区视频在线观看| 日韩中文娱乐网| 亚洲欧美激情一区| 亚洲石原莉奈一区二区在线观看| 国产成人a亚洲精品| 亚洲色图av在线| 亚洲欧美在线磁力| 欧美成人精品三级在线观看| 国产精品高潮呻吟久久av野狼| 成人在线观看视频网站| 欧美一级视频一区二区| 亚洲aa中文字幕| 亚洲欧洲一区二区三区在线观看| 亚洲黄色av网站| 92看片淫黄大片看国产片| 国产精品久久久久久久久久三级| 亚洲天天在线日亚洲洲精| 日韩经典一区二区三区| 色香阁99久久精品久久久| 亚洲精品国产精品久久清纯直播| 中文字幕日韩欧美在线视频| 精品一区二区三区电影| 精品一区二区三区三区| 亚洲香蕉成人av网站在线观看| 色爱精品视频一区| 亚洲国产日韩欧美在线99| 国产丝袜一区二区三区| 国产成人精品免高潮费视频| 一区二区三区四区精品| 亚洲国产精彩中文乱码av在线播放|