Java - 基礎


Java基礎

Java如何運行的?

開發的java源代碼,通過javac編譯成為平台無關的字節碼文件(class),然后通過JVM的解釋器將字節碼解釋成對應的機器碼

“一次編譯,到處運行”的理解

說的是java的跨平台特性,與JVM密不可分,不同環境和平台安裝好JDK就有java運行環境,並不是說java是跨平台語言;到處運行的關鍵和前提是JVM,在可以運行JVM的地方都內含着一個JVM操作系統,從而使Java提供了各種不同平台上的虛擬機制,因此實現了到處運行的效果

JDK、JRE、JVM的區別

JDK java開發工具包
JRE java運行時環境,包含JVM和Java類庫
JVM 虛擬機,運行java字節碼的運行時環境

什么是封裝,繼承,抽象?

封裝 隱藏對象的屬性和實現細節,僅對外提供公共訪問方式--安全性、復用性
繼承 is-a的關系,子類接受共有的屬性和方法,並加入獨有的屬性和方法
抽象 共有的方法名和類,具體實現交給子類

繼承注意事項

1、子類只能繼承父類所有非私有的成員(成員方法、成員變量)

2、子類不能繼承父類的構造方法,但是可以通過super關鍵字去訪問父類構造方法

equals和==的區別

== 比較的是變量在內存中堆內存地址,判斷兩個對象的地址是否相同,即是否指向同一個對象
equals 比較兩個對象內容是否相等,Object類也有equals,但調用==,如果類不重寫equals方法,則調用Object的equals

HashCode和equals的一些約定

a:equals 相等,hashCode 一定要相等

b:重寫了 hashCode 也要重寫 equals

c:hashCode 需要保持一致性,狀態改變返回的哈希值仍然要一致

怎么理解多態?好處?為什么要用多態?

多態:父類的引用指向子類

好處:子類的功能可以被父類的方法或引用變量所調用

為什么用:復用性,高內聚低耦合,可擴展性

super和this的區別

this 代表本類的對象引用
super 代表本類的父類的引用,代表父類存儲空間的標識

代碼塊執行順序

靜態代碼塊(只執行一次)-> 構造代碼塊(每次執行構造方法前都執行)-> 構造方法

普通類初始化順序

靜態屬性(變量、方法)-> 靜態代碼塊-> 成員屬性 -> 構造代碼塊 -> 構造函數

繼承的子類初始化順序

父類靜態屬性 -> 父類靜態代碼塊 -> 子類靜態屬性 -> 子類靜態代碼塊 -> 父類成員變量 -> 父類構造代碼塊 -> 父類構造方法 -> 子類成員變量 -> 子類構造代碼塊 -> 子類構造方法

final、finally、finalize的區別

final

修飾類:類不可被繼承

修飾變量:基本數據類型的變量不可重新賦值,引用類型的變量不可指向其他對象

修飾方法:方法不可被重寫,即該方法無需進行擴展

finally

finally語句塊總會被執行,通常是資源的回收(數據庫關閉,IO關閉,網絡關閉等)

finalize

保證對象在被垃圾收集之前完成特定的資源回收

Java異常類相關

Error 未檢查異常,系統級別錯誤,無法恢復和預防,如系統崩潰,虛擬機錯誤,內存空間不足
Exception 分RuntimeException(未檢查)和IOException(需檢查),程序級別錯誤,可恢復和預防,創建一個類繼承Exception是需檢查異常
throw 用在方法體內,拋出異常對象名,可以拋出任意Throwable,需由方法體內的語句或throws拋出處理
throws 用在方法名后,跟的是異常名,表示可能拋出異常,並不一定發生這些異常,由方法調用者處理異常

接口和抽象類的區別

接口

1、不包含非常量成員

2、都是靜態抽象方法,可多繼承

3、只能public,沒有構造方法,沒有main函數不可運行

4、主要作用:API定義和實現分離的目的

抽象類

1、可以有普通成員變量

2、可有成員方法也可有抽象方法,單繼承

3、public、protected、private都可以,有構造方法,有main函數

4、主要作用:代碼重用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM