亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java 對象類型信息 存在哪? 強制類型轉化的時候需要執行哪些檢查以確保程序的正確性?

java 對象類型信息 存在哪? 強制類型轉化的時候需要執行哪些檢查以確保程序的正確性?

牛魔王的故事 2019-04-03 11:07:51
java 對象類型信息 存在哪? 強制類型轉化的時候需要執行哪些檢查以確保程序的正確性?
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

JVM維護了一個叫方法區的內存區域。方法區里保存了所用到的類型信息,如該類的全限定名,直接父類的全限定名,指向classloader的指針,指向Class對象的指針等等。

所有在堆上創建的對象都有一個指回方法區的指針,該指針指向了該對象的實際類型信息。

執行instanceof的時候,JVM就是通過查找方法區中的類型信息來獲得結果的。在做類型轉換時,JVM同樣需要檢查類型信息,以判斷該轉換是否合法

查看完整回答
反對 回復 2019-04-12
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

Java虛擬機把內存主要劃分成 方法區、棧、堆等,類型信息是在class文件讀入的時候就被放到方法區了的。
你說的檢查類型,分為兩種情況:
1)基本類型。JVM內部的基本類型和Java語言的基本類型大部分是一致的,因此編譯時檢查和轉換就完成了。
2)引用類型。不僅要編譯時檢查,而且在運行時會對對象持有的方法區的指針從方法區中查看類型是否一致,檢查時還會根據對象方法區中的超類型或接口類型的指針進行判斷,保證可以轉換為其超類型。

查看完整回答
反對 回復 2019-04-12
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

毫無疑問,對象信息肯定在堆內存啊
棧內存知識存儲了對象的一個句柄
可以先用instanceof關鍵字判斷對象是否是你準備轉換的類型,然后再向下轉換,比較安全

查看完整回答
反對 回復 2019-04-12
  • 3 回答
  • 0 關注
  • 1147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號