java牛客刷題2020年9月4日
阿新 • • 發佈:2020-09-04
java牛客刷題2020年9月4日
-
對於abstract宣告的類,下面說法正確的是
可以例項化 不可以被繼承 子類為abstract 只能被繼承 可以被抽象類繼承 正確答案: E 你的答案: B A,抽象類不能例項化,因為有抽象方法未實現 B,可以被繼承。派生類可以實現抽象方法 C,子類可以是抽象的,也可以非抽象的 D,只能被繼承說法太肯定,不正確 E,可以被抽象類繼承,也可以被非抽象類繼承
-
有時為了避免某些未識別的異常拋給更高的上層應用,在某些介面實現中我們通常需要捕獲編譯執行期所有的異常, catch 下述哪個類的例項才能達到目的:()
正確答案: B 你的答案: D (錯誤)
Error Exception RuntimeException Throwable
-
檢查程式,是否存在問題,如果存在指出問題所在,如果不存在,說明輸出結果。
public class HelloB extends HelloA { public HelloB() { } { System.out.println("I’m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } class HelloA { public HelloA() { } { System.out.println("I’m A class"); } static { System.out.println("static A"); } }
static A I’m A class static B I’m B class 答案: 其中涉及:靜態初始化程式碼塊、構造程式碼塊、構造方法 當涉及到繼承時,按照如下順序執行: 1、執行父類的靜態程式碼塊 static { System.out.println("static A"); } 輸出:static A 2、執行子類的靜態程式碼塊 static { System.out.println("static B"); } 輸出:static B 3、執行父類的構造程式碼塊 { System.out.println("I’m A class"); } 輸出:I'm A class 4、執行父類的建構函式 public HelloA() { } 輸出:無 5、執行子類的構造程式碼塊 { System.out.println("I’m B class"); } 輸出:I'm B class 6、執行子類的建構函式 public HelloB() { } 輸出:無 那麼,最後的輸出為: static A static B I'm A class I'm B class 正確答案:C 或者: 1.靜態程式碼塊 2.構造程式碼塊3.構造方法的執行順序是1>2>3;明白他們是幹嘛的就理解了。 1.靜態程式碼塊:是在類的載入過程的第三步初始化的時候進行的,主要目的是給類變數賦予初始值。 2.構造程式碼塊:是獨立的,必須依附載體才能執行,Java會把構造程式碼塊放到每種構造方法的前面,用於例項化一些共有的例項變數,減少程式碼量。 3.構造方法:用於例項化變數。 1是類級別的,2、3是例項級別的,自然1要優先23. 在就明白一點:對子類得主動使用會導致對其父類得主動使用,所以儘管例項化的是子類,但也會導致父類的初始化和例項化,且優於子類執行。
-
Java 中的集合類包括 ArrayList 、 LinkedList 、 HashMap 等,下列關於集合類描述正確的是?()
正確答案: A B D 你的答案: B C D (錯誤)
ArrayList和LinkedList均實現了List介面 ArrayList訪問速度比LinkedList快 隨機新增和刪除元素時,ArrayList的表現更加快速 HashMap實現Map介面,它允許任何型別的鍵和值物件,並允許將NULL用作鍵或值 解釋: A、HashMap實現了Map介面的,它的Key和Value都可以是null,但是Hashtable種,Key和Value都不能是null。 B、ArrayList與LinkedList都實現了List介面,繼承了AbstractList類。 C、ArrayList底層是動態陣列是實現,隨機位置新增和刪除,都需要移動陣列的資料,而LinkedList底層是雙向連結串列,只需要修改Node節點的引用。 D、隨機訪問陣列要比連結串列塊。 下面放一張ArrayList和LinkedList的區別表:
-
在使用super和this關鍵字時,以下描述錯誤的是()
在子類構造方法中使用super()顯示呼叫父類的構造方法,super()必須寫在子類構造方法的第一行,否則編譯不通過 super()和this()不一定要放在構造方法內第一行 this()和super()可以同時出現在一個建構函式中 this()和super()可以在static環境中使用,包括static方法和static語句塊 正確答案: B C D 你的答案: B D (錯誤) 1、super()表示呼叫父類建構函式、this()呼叫自己的建構函式,而自己的建構函式第一行要使用super()呼叫父類的建構函式,所以這倆不能在一個建構函式中會出現重複引用的情況 2、super()和this()必須在建構函式第一行,所以這一點也表明他倆不能在一個建構函式中 3、this()和super()都指的是物件,所以,均不可以在static環境中使用。包括:static變數,static方法,static語句塊(裡面不能使用非static型別的)。
-