網(wǎng)站建設的目的和作用網(wǎng)站seo推廣排名
文章目錄
- 內存
- 內存管理
- 執(zhí)行過程
- 要點
- 面試題
內存
內存管理
由JVM管理
- 堆:new出來的對象(包括成員變量、數(shù)組元素、方法的地址)
- 棧:局部變量(包括方法的參數(shù))
- 方法區(qū):.class字節(jié)碼文件(包括方法、靜態(tài)變量)
執(zhí)行過程
- 先加載,study方法入方法區(qū)
- 用到方法就入棧,main方法入棧
- Student對象入堆
- 找到棧中地址,基于地址找到指向的堆中的Student對象,修改name為張三
- 同理,修改age為25
- 調用study方法,study入棧
- 方法走完,可以出棧,后進先出
- 失去調用,對象沒有引用,被垃圾回收
要點
- 用到哪個類就將哪個類的.class加載到方法區(qū)中
- 調用方法會入棧,方法執(zhí)行完就出棧
- new出來的對象存儲在堆中,引用里面裝的是堆中對象的地址
面試題
抽象類和接口的區(qū)別:
抽象類:
- 由
abstract
修飾 - 可以包含變量、常量、構造方法、普通方法、靜態(tài)方法、抽象方法
- 派生類通過
extends
繼承 - 只能繼承一個(單一繼承)
- 抽象類中的成員,任何訪問權限都行(
public
、private
、protected
、默認)
接口:
- 由
interface
定義 - 可以包含抽象方法、常量、(jdk1.8之后 支持 靜態(tài)方法、抽象方法)
- 實現(xiàn)類通過
implements
實現(xiàn) - 可以實現(xiàn)多個(多實現(xiàn))
- 接口中的成員,訪問權限只能是
public
共同點 :
- 都不能被實例化。
- 都可以包含抽象方法。
- 都可以有默認實現(xiàn)的方法(Java 8 可以用
default
關鍵字在接口中定義默認方法)。
區(qū)別 :
- 接口主要用于對類的行為進行約束,實現(xiàn)了某接口就具有對應的行為。抽象類主要用于代碼復用,強調的是所屬關系。
- 一個類只能繼承一個類,但是可以實現(xiàn)多個接口。
- 接口中的成員變量只能是
public static final
類型的,不能被修改且必須有初始值,而抽象類的成員變量默認 default,可在子類中被重新定義,也可被重新賦值。