国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java虛擬機(jī)規(guī)范(Java虛擬機(jī)的結(jié)構(gòu))

bang590 / 919人閱讀

摘要:原始類型和值虛擬機(jī)支持的原始數(shù)據(jù)類型是數(shù)字類型布爾類型和類型。,其值為位帶符號(hào)的二進(jìn)制補(bǔ)碼整數(shù),其默認(rèn)值為零。

Java虛擬機(jī)的結(jié)構(gòu)

本文檔指定了一個(gè)抽象機(jī)器,它沒有描述Java虛擬機(jī)的任何特定實(shí)現(xiàn)。

要正確實(shí)現(xiàn)Java虛擬機(jī),你只需要能夠讀取類文件格式并正確執(zhí)行其中指定的操作,不屬于Java虛擬機(jī)規(guī)范的實(shí)現(xiàn)細(xì)節(jié)會(huì)不必要地限制實(shí)現(xiàn)者的創(chuàng)造力。例如,運(yùn)行時(shí)數(shù)據(jù)區(qū)的內(nèi)存布局、使用的垃圾收集算法、Java虛擬機(jī)指令的任何內(nèi)部優(yōu)化(例如,將它們轉(zhuǎn)換為機(jī)器代碼)由實(shí)現(xiàn)者自行決定。

本規(guī)范中對(duì)Unicode的所有引用都是針對(duì)Unicode標(biāo)準(zhǔn)版本11.0.0給出的,可從http://www.unicode.org/獲取。

class文件格式

由Java虛擬機(jī)執(zhí)行的編譯代碼使用獨(dú)立于硬件和操作系統(tǒng)的二進(jìn)制格式表示,通常(但不一定)存儲(chǔ)在文件中,稱為class文件格式,類文件格式精確地定義了類或接口的表示,包括可能在特定于平臺(tái)的目標(biāo)文件格式中被認(rèn)為是理所當(dāng)然的字節(jié)排序等細(xì)節(jié)。

第4章“class文件格式”詳細(xì)介紹了class文件格式。

數(shù)據(jù)類型

與Java編程語言一樣,Java虛擬機(jī)也可以使用兩種類型:原始類型和引用類型。相應(yīng)地,有兩種值可以存儲(chǔ)在變量中、作為參數(shù)傳遞、由方法返回,并對(duì)其進(jìn)行操作:原始值和引用值。

Java虛擬機(jī)期望幾乎所有類型檢查都在運(yùn)行時(shí)之前完成,通常由編譯器完成,而不必由Java虛擬機(jī)本身完成,原始類型的值不需要被標(biāo)記或以其他方式檢查以在運(yùn)行時(shí)確定它們的類型,或者與引用類型的值區(qū)分開來。相反,Java虛擬機(jī)的指令集使用對(duì)特定類型的值進(jìn)行操作的指令來區(qū)分其操作數(shù)類型,例如,iaddladdfadddadd都是Java虛擬機(jī)指令,它們添加兩個(gè)數(shù)值并產(chǎn)生數(shù)值結(jié)果,但每個(gè)指令都專門分別用于其操作數(shù)類型:intlongfloatdouble

Java虛擬機(jī)包含對(duì)對(duì)象的顯式支持,對(duì)象是動(dòng)態(tài)分配的類實(shí)例或數(shù)組,對(duì)對(duì)象的引用被視為具有Java虛擬機(jī)類型引用,類型引用的值可以被認(rèn)為是指向?qū)ο蟮闹羔槪粋€(gè)對(duì)象可能存在多個(gè)引用,對(duì)象總是通過類型引用的值操作、傳遞和測(cè)試。

原始類型和值

Java虛擬機(jī)支持的原始數(shù)據(jù)類型是數(shù)字類型、布爾類型和returnAddress類型。

數(shù)字類型由整數(shù)類型和浮點(diǎn)類型組成。

整數(shù)類型是:

byte,其值為8位有符號(hào)二進(jìn)制補(bǔ)碼整數(shù),其默認(rèn)值為零。

short,其值為16位有符號(hào)二進(jìn)制補(bǔ)碼整數(shù),其默認(rèn)值為零。

int,其值為32位帶符號(hào)的二進(jìn)制補(bǔ)碼整數(shù),其默認(rèn)值為零。

long,其值為64位帶符號(hào)的二進(jìn)制補(bǔ)碼整數(shù),其默認(rèn)值為零。

char,其值為16位無符號(hào)整數(shù),表示基本多語言平面中的Unicode代碼點(diǎn),使用UTF-16編碼,其默認(rèn)值為空代碼點(diǎn)("u0000")。

浮點(diǎn)類型是:

float,其值是浮點(diǎn)值集的元素,或者,如果支持,則為浮點(diǎn)擴(kuò)展指數(shù)值集,其默認(rèn)值為正零。

double,其值是雙精度值集的元素,或者,如果支持,則為雙精度擴(kuò)展指數(shù)值集,其默認(rèn)值為正零。

布爾類型的值對(duì)真值truefalse進(jìn)行編碼,默認(rèn)值為false

Java?虛擬機(jī)規(guī)范的第一版沒有將布爾值視為Java虛擬機(jī)類型,但是,布爾值在Java虛擬機(jī)中的支持有限,Java?虛擬機(jī)規(guī)范的第二版通過將布爾值視為一種類型來澄清該問題。

returnAddress類型的值是指向Java虛擬機(jī)指令操作碼的指針,在原始類型中,只有returnAddress類型與Java編程語言類型沒有直接關(guān)聯(lián)。

整數(shù)類型和值

Java虛擬機(jī)的整數(shù)類型的值是:

對(duì)于byte,從-128到127(-27到27 - 1),包括端值。

對(duì)于short,從-32768到32767(-215到215 - 1),包括端值。

對(duì)于int,從-2147483648到2147483647(-231到231 - 1),包括端值。

對(duì)于long,從-9223372036854775808到9223372036854775807(-263到263 - 1),包括端值。

對(duì)于char,從0到65535,包括端值。

浮點(diǎn)類型、值集和值

浮點(diǎn)類型是floatdouble,概念上與IEEE二進(jìn)制浮點(diǎn)算術(shù)標(biāo)準(zhǔn)中規(guī)定的32位單精度和64位雙精度格式IEEE 754值和運(yùn)算相關(guān)聯(lián)。

IEEE 754標(biāo)準(zhǔn)不僅包括正負(fù)號(hào)數(shù),還包括正負(fù)零,正負(fù)無窮大,以及特殊的非數(shù)字值(以下簡稱為“NaN”),NaN值用于表示某些無效操作的結(jié)果,例如將零除以零。

Java虛擬機(jī)的每個(gè)實(shí)現(xiàn)都需要支持兩個(gè)浮點(diǎn)值的標(biāo)準(zhǔn)集,稱為浮點(diǎn)值集和雙精度值集,此外,Java虛擬機(jī)的實(shí)現(xiàn)可以選擇支持兩個(gè)擴(kuò)展指數(shù)浮點(diǎn)值集中的一個(gè)或兩個(gè),稱為浮點(diǎn)擴(kuò)展指數(shù)值集和雙精度擴(kuò)展指數(shù)值集,在某些情況下,可以使用這些擴(kuò)展指數(shù)值集代替標(biāo)準(zhǔn)值集來表示floatdouble類型的值。

任何浮點(diǎn)值集的有限非零值都可以表示為s · m · 2(e - N + 1),其中s為+1或-1,m是小于2N的正整數(shù),e是Emin = -(2K-1-2)和Emax = 2K-1-1之間的整數(shù),包括端值,其中N和K是依賴于值集的參數(shù)。有些值可以用多種方式以這種形式表示,例如,假設(shè)值集中的值v可能使用s、m和e的某些值表示為此形式,那么如果m是偶數(shù)且e小于2K-1,則可以將m減半,將e增加1,以產(chǎn)生相同值v的第二個(gè)表示。如果m ≥ 2N-1,這種形式的表示稱為標(biāo)準(zhǔn)化,否則該表示被稱為非標(biāo)準(zhǔn)化,如果值集中的值不能以m ≥ 2N-1的方式表示,則該值稱為非標(biāo)準(zhǔn)化值,因?yàn)樗鼪]有標(biāo)準(zhǔn)化表示。

下表中總結(jié)了對(duì)兩個(gè)必需和兩個(gè)可選浮點(diǎn)值集的參數(shù)N和K(以及派生參數(shù)Emin和Emax)的約束。

參數(shù) 浮點(diǎn) 浮點(diǎn)擴(kuò)展指數(shù) 雙精度 雙精度擴(kuò)展指數(shù)
N 24 24 53 53
K 8 ≥ 11 11 ≥ 15
Emax +127 ≥ +1023 +1023 ≥ +16383
Emin -126 ≤ -1022 -1022 ≤ -16382

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75002.html

相關(guān)文章

  • Java虛擬機(jī)規(guī)范(介紹)

    摘要:此處指定的虛擬機(jī)與平臺(tái)兼容,并支持語言規(guī)范中指定的編程語言。第章說明了虛擬機(jī)的指令集,按字母順序顯示操作碼助記符。 介紹 一點(diǎn)歷史 Java?編程語言是一種通用的、并發(fā)的、面向?qū)ο蟮恼Z言,它的語法類似于C和C++,但它省略了許多使C和C++復(fù)雜、混亂和不安全的特性。最初開發(fā)Java平臺(tái)是為了解決為聯(lián)網(wǎng)的消費(fèi)者設(shè)備構(gòu)建軟件的問題,它旨在支持多種主機(jī)架構(gòu),并允許安全交付軟件組件,為了滿足這...

    chnmagnus 評(píng)論0 收藏0
  • Java虛擬機(jī)規(guī)范(目錄)

    摘要:虛擬機(jī)規(guī)范介紹虛擬機(jī)介紹虛擬機(jī)的結(jié)構(gòu)文件格式數(shù)據(jù)類型原始類型和值引用類型和值運(yùn)行時(shí)數(shù)據(jù)區(qū)幀對(duì)象的表示浮點(diǎn)算術(shù)特殊方法異常指令集匯總類庫公有設(shè)計(jì),私有實(shí)現(xiàn)編譯虛擬機(jī)格式示例使用常量局部變量和控制結(jié)構(gòu)算術(shù)訪問運(yùn)行時(shí)常量池更多控制示例接收參數(shù)調(diào)用 Java虛擬機(jī)規(guī)范 Java SE 12 Edition 介紹 Java虛擬機(jī)介紹 Java虛擬機(jī)的結(jié)構(gòu) class文件格式 數(shù)據(jù)類型 原始類型...

    oysun 評(píng)論0 收藏0
  • Java虛擬機(jī)類加載過程

    摘要:二驗(yàn)證驗(yàn)證主要是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會(huì)危害虛擬機(jī)的自身安全。五初始化類的初始化階段是類加載過程的最后一步,該階段才真正開始執(zhí)行類中定義的程序代碼或者說是字節(jié)碼。 關(guān)注我,每天三分鐘,帶你輕松掌握一個(gè)Java相關(guān)知識(shí)點(diǎn)。 虛擬機(jī)(JVM)經(jīng)常出現(xiàn)在我們面試中,但是工作中卻很少遇到,導(dǎo)致很多同學(xué)沒有去了解過。其實(shí)除了應(yīng)付面試,作為java程序員,了解...

    lentoo 評(píng)論0 收藏0
  • 萬萬沒想到,JVM內(nèi)存結(jié)構(gòu)的面試題可以問的這么難?

    摘要:方法區(qū)在實(shí)際內(nèi)存空間站可以是不連續(xù)的。這一規(guī)定,可以說是給了虛擬機(jī)廠商很大的自由。但是值得注意的是,堆其實(shí)還未每一個(gè)線程單獨(dú)分配了一塊空間,這部分空間在分配時(shí)是線程獨(dú)享的,在使用時(shí)是線程共享的。 在我的博客中,之前有很多文章介紹過JVM內(nèi)存結(jié)構(gòu),相信很多看多我文章的朋友對(duì)這部分知識(shí)都有一定的了解了。 那么,請(qǐng)大家嘗試著回答一下以下問題: 1、JVM管理的內(nèi)存結(jié)構(gòu)是怎樣的? 2、不同的...

    CloudwiseAPM 評(píng)論0 收藏0
  • 從表到里學(xué)習(xí)JVM實(shí)現(xiàn)

    在社會(huì)化分工、軟件行業(yè)細(xì)分專業(yè)化的趨勢(shì)下,會(huì)真的參與到底層系統(tǒng)實(shí)現(xiàn)的人肯定是越來越少(比例上說)。真的會(huì)參與到JVM實(shí)現(xiàn)的人肯定是少數(shù)。 但如果您對(duì)JVM是如何實(shí)現(xiàn)的有興趣、充滿好奇,卻苦于沒有足夠系統(tǒng)的知識(shí)去深入,那么可以參考RednaxelaFX整理的這個(gè)書單。 showImg(http://segmentfault.com/img/bVbGzn); 本豆列的脈絡(luò)是:    1. JV...

    Cristic 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<