更新時(shí)間:2022-03-28 13:24:09 來源:動力節(jié)點(diǎn) 瀏覽2650次
覆蓋:覆蓋與運(yùn)行時(shí)Java的多態(tài)性有關(guān)。子類(或派生類)在運(yùn)行時(shí)提供超類(或基類)中方法的特定實(shí)現(xiàn)。
重載:重載與編譯時(shí)(或靜態(tài))多態(tài)性有關(guān)。此功能允許不同的方法具有相同的名稱,但不同的簽名,特別是輸入?yún)?shù)的數(shù)量和輸入?yún)?shù)的類型。
我們可以重載靜態(tài)方法嗎? 答案是“是”。我們可以有兩個(gè)或多個(gè)同名但輸入?yún)?shù)不同的靜態(tài)方法
我們可以覆蓋java中的靜態(tài)方法嗎? 我們可以在子類中聲明具有相同簽名的靜態(tài)方法,但它不被視為重寫,因?yàn)椴粫腥魏芜\(yùn)行時(shí)多態(tài)性。因此答案是“否”。靜態(tài)方法不能被覆蓋,因?yàn)榉椒ǜ采w只發(fā)生在方法的動態(tài)(即運(yùn)行時(shí))查找的上下文中。靜態(tài)方法(按其名稱)是靜態(tài)查找的(即在編譯時(shí))。
程序編譯成功。但在運(yùn)行時(shí)會拋出錯(cuò)誤“NoSuchMethodError”。
成員變量(類級別范圍):成員變量必須在類內(nèi)(任何函數(shù)外)聲明。它們可以在課堂的任何地方直接訪問
局部變量(方法級作用域):在方法內(nèi)聲明的變量具有方法級作用域,不能在方法外訪問。
循環(huán)變量(塊范圍):在方法中的一對括號“{”和“}”內(nèi)聲明的變量僅在括號內(nèi)具有范圍。
在實(shí)例方法或構(gòu)造函數(shù)中,this 是對當(dāng)前對象的引用——調(diào)用其方法或構(gòu)造函數(shù)的對象。您可以使用 this 從實(shí)例方法或構(gòu)造函數(shù)中引用當(dāng)前對象的任何成員。
這個(gè)關(guān)鍵字的使用
用于引用當(dāng)前類實(shí)例變量。
調(diào)用當(dāng)前類構(gòu)造函數(shù)。
它可以作為方法調(diào)用中的參數(shù)傳遞。
它可以在構(gòu)造函數(shù)調(diào)用中作為參數(shù)傳遞。
用于返回當(dāng)前類實(shí)例。
用于調(diào)用當(dāng)前類方法(隱式)
Java中的主要方法是沒有地外方法。除了 main() 就像任何其他方法一樣并且可以以類似的方式重載之外,JVM 總是尋找方法簽名來啟動程序。
普通的 main 方法作為 JVM 開始執(zhí)行程序的入口點(diǎn)。
我們可以重載Java中的main方法。但是當(dāng)我們運(yùn)行你的程序時(shí),程序不會執(zhí)行重載的main方法,我們只需要從實(shí)際的main方法中調(diào)用重載的main方法。
在 C++ 和 Java 中,只有返回類型不同的函數(shù)不能被重載。函數(shù)的返回類型不是編譯器生成的用于唯一標(biāo)識每個(gè)函數(shù)的錯(cuò)位名稱的一部分。No of arguments, Type of arguments & Sequence of arguments 是用于為每個(gè)函數(shù)生成唯一的重整名稱的參數(shù)。即使名稱相同(重載),編譯器也可以基于這些獨(dú)特的錯(cuò)位名稱來理解要調(diào)用哪個(gè)函數(shù)。
java中的super關(guān)鍵字是一個(gè)引用變量,用來引用父類對象。關(guān)鍵詞“super”帶著繼承的概念出現(xiàn)了。每當(dāng)您創(chuàng)建子類的實(shí)例時(shí),都會隱式創(chuàng)建父類的實(shí)例,即由超引用變量引用。
java super關(guān)鍵字的各種使用場景:
super 用于引用直接父實(shí)例變量
super用于調(diào)用父類方法
super() 用于調(diào)用直接父構(gòu)造函數(shù)
java中的static關(guān)鍵字主要用于內(nèi)存管理。我們可以將 java static 關(guān)鍵字應(yīng)用于變量、方法、塊和嵌套類。static 關(guān)鍵字屬于類而不是類的實(shí)例。
靜態(tài)可以是:
變量(也稱為類變量)
方法(也稱為類方法)
堵塞
嵌套類
(1)HashMap 不同步。它不是線程安全的,并且在沒有適當(dāng)?shù)耐酱a的情況下不能在多個(gè)線程之間共享,而 Hashtable 是同步的。它是線程安全的,可以與許多線程共享。
(2)HashMap 允許一個(gè)空鍵和多個(gè)空值,而 Hashtable 不允許任何空鍵或空值。
(3)如果不需要線程同步,HashMap 通常優(yōu)于 HashTable
在 Java 中,所有對象都在Heap上動態(tài)分配。這與 C++ 中的對象可以在堆棧或堆上分配內(nèi)存不同。在 C++ 中,當(dāng)我們使用 new() 分配對象時(shí),對象分配在堆上,否則如果不是全局或靜態(tài)的,則在堆棧上分配。
在Java中,當(dāng)我們只聲明一個(gè)類類型的變量時(shí),只會創(chuàng)建一個(gè)引用(不為對象分配內(nèi)存)。要將內(nèi)存分配給對象,我們必須使用 new()。所以對象總是在堆上分配內(nèi)存。
Java 中的 final 變量只能被賦值一次,我們可以在聲明中或之后賦值。
final int i = 10;
i = 30; // Error because i is final.
Java中的空白最終變量是在聲明期間未初始化的最終變量。下面是一個(gè)空白final的簡單例子。
// A simple blank final example
final int i;
i = 30;
對象克隆意味著創(chuàng)建原始對象的精確副本。如果一個(gè)類需要支持克隆,它必須實(shí)現(xiàn) java.lang.Cloneable 接口并覆蓋 Object 類的 clone() 方法。clone() 方法的語法是:
protected Object clone() throws CloneNotSupportedException
如果對象的類沒有實(shí)現(xiàn) Cloneable 接口,那么它會拋出異常 'CloneNotSupportedException' 。
以上就是關(guān)于“2022年Java基礎(chǔ)筆試題及答案”的介紹,如果大家想了解更多相關(guān)知識,可以進(jìn)行Java基礎(chǔ)筆試題目的相關(guān)學(xué)習(xí),相信對大家的學(xué)習(xí)一定會有所幫助。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743