這篇文章主要講解了“java虛擬機知識點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java虛擬機知識點有哪些”吧!
創新互聯長期為超過千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為謝通門企業提供專業的網站建設、網站設計,謝通門網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。

整數在java虛擬機中以補碼的形式保存,
原碼:所謂原碼,就是符號位加上數字的二進制表示,以int為例,第1位表示符號位(正數或負數),其余31位表示該數字的二進制值。
反碼:所謂反碼,就是符號位不變,其余位取反。
補碼:負數的補碼就是反碼加1,正數的補碼就是原碼本身。
在java中,可以使用位運算查看整數中每一位的實際值,代碼如下:
// 打印 -10 在虛擬機內的實際表示
public static void main(String[] args) {
int a = -10;
for(int i = 0; i < 32; i++) {
int t = (a & 0x8000_0000 >>> i) >>> (31 - i);
System.out.print(t);
}
}這段程序的基本思想是,進行32次循環,每次循環取出int值中的一位,第3行的 0x8000_0000 是一個首位為1,其余位為0的整數,通過右移i位,定位到要獲取的第i位,并將除該位外的其他位統一設置為0,而該位不變,最近將該位移至最右,并進行輸出。
使用補碼的好處
可以統一數字0的表示。0既是非正數,又是非負數,使用原碼表示時符號位難以確定,把0歸入正數或者負數得到的原碼是不同的。但是使用補碼表示時,無論把0歸入正數還是負數都會得到相同的結果。
使用補碼可以簡化整數的加減法計算,將減法計算視為加法計算,實現減法和加法的完全統一,實現正數和負數加法的統一。
在java虛擬機中,浮點數有float和double兩種,分別是32位和64位浮點數。浮點數在java虛擬機中表示比整數略顯復雜。目前使用最為廣泛的是由 IEEE 754 定義的浮點數格式。
在IEEE 754的定義中,一個浮點數由3部分組成:符號位、指數位 和 尾數位。以32位float類型為例,符號位占1位,表示正負數,指數位占8位,尾數為點剩余23位。

31位為符號位:0表示正數,1表示負數
31~23位:共8位表示指數位,內存存儲數據從0~2^8-1=255,由于指數可以是正也可以是負,所以指數位采用移位存儲表示數據,8位有符號有可表示數據從-128~127,所以指數位表示的實際指數應該是無符號位數減去127,例如0000 0000表示為0-127=-127,1111 1111表示為255-127=128,1000 0001表示為129-127=2
22~0位:共23位表示尾數位,內存存儲數據從0~2^23-1=8388607
在java中,使用Float.floatToRawIntBits()函數可以獲得一個單精度浮點數的 IEEE 754 表示,如下:
public static void main(String[] args) {
float a = -5;
System.out.println(Integer.toBinaryString(Float.floatToIntBits(a)));
}感謝各位的閱讀,以上就是“java虛擬機知識點有哪些”的內容了,經過本文的學習后,相信大家對java虛擬機知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
新聞標題:java虛擬機知識點有哪些
本文路徑:http://www.yijiale78.com/article44/pjdoee.html
成都網站建設公司_創新互聯,為您提供靜態網站、搜索引擎優化、網站內鏈、自適應網站、網站維護、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯