欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java class文件格式總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年06月15日 15:12:20   投稿:mrr  
這篇文章主要介紹了Java class文件格式總結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧

我們都知道JVM能夠識(shí)別的只有class格式的文件, 而源文件只是我們?nèi)四茏R(shí)別的, 不能被JVM識(shí)別。 那我們要在更深的層次上理解Java語(yǔ)言, 理解JVM, 只懂源文件是不夠的, 因?yàn)樘摂M機(jī)的很多的行為, 是在class文件中定義的, 而我們要理解JVM的行為, 就必須也學(xué)會(huì)JVM能理解的“語(yǔ)言”, 那就是class文件格式 。 就像我們想要深入的了解一個(gè)外國(guó)人, 只站在自己的角度上是不可能了解他的, 只有你學(xué)會(huì)了他的語(yǔ)言, 才能對(duì)他更了解, 因?yàn)橹挥心憷斫饬怂f的話, 才能知道他做的事, 進(jìn)而了解他的行事方式和性格特點(diǎn)。 當(dāng)然, 也有另外一個(gè)方式可以讓你了解外國(guó)人, 那就是讓他學(xué)會(huì)中國(guó)話, 你們用中文交流。 但是在Java的世界里, 這是不可能的, 因?yàn)槟悴豢赡茏孞VM識(shí)別源文件, 所以, 只能你去學(xué)習(xí)JVM能理解的語(yǔ)言 ---- class文件。 

理解了class文件的格式, 不僅對(duì)理解JVM的行為有指導(dǎo)性的意義, 它還能讓我們對(duì)Java代碼有更加清晰深刻的認(rèn)識(shí), 畢竟class文件是由我們寫的java代碼“翻譯”過來的。 明白了class文件的格式, 你就能知道方法是如何表示的, 字段是如何表示的, 繼承是如何表示的 , 方法體是如何表示的, 等等。 所有源文件中的東西, 都會(huì)在class文件中有相應(yīng)的描述形式。 這樣會(huì)讓我們?cè)趯懘a時(shí)做到胸有成竹。 當(dāng)代碼出了問題時(shí), 也能更快的找出原因所在,因?yàn)槲覀兛梢园言创a生成的class文件反編譯出來, 看看它內(nèi)部是如何實(shí)現(xiàn)的。 畢竟原理明白了, 源代碼只是表象罷了。

此外, class文件不只是可以由Java代碼生成。 其他很多基于JVM的語(yǔ)言, 也是生成標(biāo)準(zhǔn)的class文件, 然后被虛擬機(jī)執(zhí)行。 如我最近正在學(xué)習(xí)的scala語(yǔ)言, 它就是基于虛擬機(jī)的。  scalac編譯器可以將scala代碼編譯成class文件。 這樣的話, 了解class文件格式, 可以對(duì)學(xué)習(xí)其他基于JVM的語(yǔ)言起到很好的作用, 你會(huì)發(fā)現(xiàn), 如果你對(duì)class文件和JVM足夠了解的話, 學(xué)習(xí)這些語(yǔ)言會(huì)感到非常輕松。 class文件是JVM的一個(gè)接口, 不管你源文件中寫的是什么代碼, 不管是java還是scala, 只要通過一定的方式, 讓你寫的代碼可以轉(zhuǎn)化成格式正確的class文件, 那么JVM就能替你執(zhí)行。 如果你足夠牛, 完全可以自己創(chuàng)建一門語(yǔ)言, 實(shí)現(xiàn)一個(gè)針對(duì)這個(gè)語(yǔ)言的編譯器, 將之編譯成class, 那么虛擬機(jī)也能執(zhí)行, 并且Scala,Groovy等語(yǔ)言的設(shè)計(jì)者已經(jīng)在這么干了。  

相關(guān)文章

  • 詳解java爬蟲jsoup解析多空格class數(shù)據(jù)

    詳解java爬蟲jsoup解析多空格class數(shù)據(jù)

    在本篇內(nèi)容中小編給大家分享了java爬蟲jsoup怎么解析多空格class數(shù)據(jù)的方法和技巧,需要的朋友們跟著學(xué)習(xí)下。
    2018-12-12
  • Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解

    Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解

    動(dòng)態(tài)SQL就是動(dòng)態(tài)的生成SQL。接下來通過本文給大家介紹Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2016-09-09
  • Mybatis的sql語(yǔ)句執(zhí)行異常后打印到日志問題

    Mybatis的sql語(yǔ)句執(zhí)行異常后打印到日志問題

    文章介紹了一種Mybatis異常日志打印方案,主要通過Mybatis攔截器獲取執(zhí)行的sql語(yǔ)句,并利用ThreadLocal存儲(chǔ),以避免多線程下的sql語(yǔ)句覆蓋問題,當(dāng)異常發(fā)生時(shí),從ThreadLocal中取出sql語(yǔ)句并打印到單獨(dú)的日志文件中,方便數(shù)據(jù)恢復(fù),該方案經(jīng)過壓力測(cè)試
    2024-10-10
  • Java?Maven?Settings配置參考教程

    Java?Maven?Settings配置參考教程

    這篇文章主要介紹了Java?Maven?Settings配置參考,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java高性能緩存框架之Caffeine詳解

    Java高性能緩存框架之Caffeine詳解

    這篇文章主要介紹了Java高性能緩存框架之Caffeine詳解,Caffeine是一個(gè)基于Java8的高性能緩存框架,號(hào)稱趨于完美,Caffeine受啟發(fā)于Guava?Cache的API,使用API和Guava是一致的,需要的朋友可以參考下
    2023-12-12
  • 通過代碼實(shí)例深入解析Java重寫和重載

    通過代碼實(shí)例深入解析Java重寫和重載

    這篇文章主要介紹了通過代碼實(shí)例深入解析Java重寫和重載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java  Object類中的常用API介紹

    Java  Object類中的常用API介紹

    這篇文章主要介紹了Java  Object類中的常用API介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之隊(duì)列

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之隊(duì)列

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之隊(duì)列,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Spring概述和快速構(gòu)建的方式

    Spring概述和快速構(gòu)建的方式

    Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器(框架),Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情,本文給大家介紹spring概述和快速構(gòu)建方式,一起看看吧
    2021-06-06
  • 為什么在重寫 equals方法的同時(shí)必須重寫 hashcode方法

    為什么在重寫 equals方法的同時(shí)必須重寫 hashcode方法

    Object 類是所有類的父類,其 equals 方法比較的是兩個(gè)對(duì)象的引用指向的地址,hashcode 是一個(gè)本地方法,返回的是對(duì)象地址值。他們都是通過比較地址來比較對(duì)象是否相等的
    2016-07-07

最新評(píng)論