[英]Are primitive types only types not inherited from java.lang.Object?
我正在審查java角色的原始類型面試問題。 我在測試期間被問到這樣的陳述。
基本類型是不從java.lang.Object繼承的任何類型。
還有其他類型不擴展java.lang.Object
。 例如, null
是一個值,因此它不會擴展它。 雖然抽象類可以,但接口也不會擴展它。
關於原始類型,答案是肯定的,不是。 當你編寫它們時,原始類型不會從java.lang.Object
。 但是,在將java代碼編譯為java字節碼時,編譯器會執行一項稱為自動裝箱的操作 。
簡而言之,在編譯時,編譯器將所有原始值轉換為它們的包裝類( Integer
為int, Boolean
值為Boolean
值等)。 但是,他有效地做到了這一點,因為它轉換了int i = 0;
into Integer i = Integer.valueOf(0);
。 在幕后,包裝類型的valueOf
函數是一個Flyweight Factory,它最多只有一個Integer 0的實例,一個Integer 1等...
因此,在編碼時使用基本類型,但JVM使用原始類型的包裝器,它實現了java.lang.Object
。
不,他們不是。 接口也不從java.lang.Object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.