1. 程式人生 > 其它 >Java基礎周測-02

Java基礎周測-02

一、選擇題

1、關於可變形參,以下說法正確的是()

  A.一個方法允許傳入無數個型別相同的引數
  B.一個方法允許傳入無數個型別不同的引數
  C.一個方法允許定義無數個可變形參
  D.可變形參可以放在形參列表的任何位置

當可變引數個數多餘一個時,必將有一個不是最後一項,所以一個方法只支援有一個可變引數

因為引數個數不定,所以當其後邊還有相同型別引數時,java無法區分傳入的引數屬於前一個可變引數還是後邊的引數,所以只能讓可變引數位於最後一項

2、以下說法錯誤的是()

  A.使用new關鍵字產生物件會呼叫構造方法
  B.靜態塊會在構造方法被呼叫之前執行且只執行一次
  C.main方法不必產生物件即可被呼叫


  D.使用new關鍵字產生物件會呼叫main方法

3、以下說法錯誤的是()

  A.只要例項存在,成員變數即存在
  B.成員變數有預設值
  C.區域性變數可以不賦值,在使用時會自動賦給預設值
  D.成員變數與區域性變數的生命週期是不同的

4、關於過載以下說法錯誤的是()

  A.普通方法,構造方法都可以過載
  B.過載是同一個類當中多型的體現
  C.過載要求形參的個數,型別,次序至少有一個不一樣
  D.過載要求返回值型別必須一至

5、關於this以下說法錯誤的是()

  A.訪問變數時,變數前面可以用this
  B.呼叫方法時,方法前面可以用this
  C.this可以用在構造方法中
  D.this可以用在靜態塊中

this代表當前物件,靜態方法中不存在當前物件。

6、關於static以下說法錯誤的是()

  A.靜態方法可以直接訪問靜態變數和靜態方法
  B.靜態方法中,不能使用this關鍵字
  C.static的類和方法優於物件之前載入
  D.靜態方法能直接訪問普通成員變數或成員方法

非靜態方法不能被靜態方法直接呼叫,需要建立物件,用物件名呼叫。

7、關於final,以下描述正確的是()

  A.final修飾一個變數時,變數引用可變
  B.final修飾一個變數時,變數內容可變
  C.final修飾類的成員變數時,成員變數可以不在定義時初始化,而在建構函式中初始化
  D.final修飾一個類的時候,該類的子類不能覆蓋父類已實現的方法

8、JAVA中,final修飾的類、成員方法、變數說法錯誤的是()

  A.final修飾的類不能被繼承
  B.final修飾的方法不能被覆蓋
  C.final修飾的變數不能被修改
  D.final修飾的變數不需要顯示初始化

如果不在定義的時候或者建構函式中對final變數進行賦值的話,則生成的物件中final變數的值是未知的(編譯器也會直接報錯),因此必須進行初始化

9、final 和static 一塊用描述錯誤的()

  A.對於變數,一旦給定值,就不可以修改,並且通過類名可以訪問
  B.對於方法,表示不可覆蓋,並且可以通過類名直接訪問
  C.被static final修飾後的方法和變數只能在方法內部使用
  D.static final修飾的變數在物件例項化之前就已經存在

10、關於抽象類敘述正確的是()

  A.抽象類不能實現介面
  B.抽象類必須有“abstract class”修飾
  C.抽象類必須包含抽象方法
  D.抽象類也有類的特性,可以被例項化

11、抽象類不具備的特徵是()

  A.用abstract修飾
  B.它的抽象方法不能包含實現體
  C.從它繼承而來的子類,需要過載並實現它的各個抽象方法  重寫(覆蓋)
  D.不能用new直接例項化

12、抽象類和介面的區別,一下說法錯誤的是 ()

  A.介面是公開的,裡面不能有私有的方法或變數,是用於讓別人使用的,而抽象類是可以有私有方法或私有變數的
  B.abstract class 在 Java 語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface,介面可以實現多重繼承
  C.在abstract class 中可以有自己的成員變數,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的資料成員,所有的成員方法預設都是 public abstract 型別的
  D.介面中不能含有靜態程式碼塊以及靜態方法,而抽象類可以有靜態程式碼塊和靜態方法

13、關於static中繼承、過載、重寫以及載入時機說法錯誤的是()

  A.java中static方法不能被覆蓋
  B.java中static class不能被繼承
  C.java中static方法不能被過載
  D.java中static修飾的變數優於物件建立之前

14、關於介面(jdk8)說法錯誤的是()

  A.在介面中可以新增使用 default 關鍵字修飾的非抽象方法
  B.接口裡可以宣告靜態方法,並且可以實現
  C.final可以修飾介面
  D.介面中不可以存在構造方法

修飾符 interface 介面類名(){ } 這是固定的,所以不能修飾。final修飾類,類不可被繼承,那實現implements介面也就毫無意義了。”

15、下列關於內部類的說法錯誤的是()

  A.內部類可以使用它所在類的靜態成員變數和例項成員變數
  B.內部類的類名只能在定義它的類或程式段中或在表示式內部匿名使用
  C.內部類不可以用 abstract 修飾符定義為抽象類
  D.內部類可作為其他類的成員,而且可訪問它所在類的成員

16、下列關於內部類說法正確的是()

  A.內部類可以與包含它的類名相同
  B.內部類只能使用其所在類的靜態成員變數,不能使用其所在類的成員區域性變數
  C.內部類可以用abstract修飾定義為抽象類,不能用private或protected定義
  D.外部使用內部類時,必須給出類的全名

17、關於匿名內部類的說法錯誤的是()

  A.匿名內部類中是可以定義構造方法的
  B.匿名內部類中不能存在任何的靜態成員變數和靜態方法
  C.匿名內部類不能是抽象的,它必須要實現繼承的類或者實現的介面的所有抽象方法
  D.使用匿名內部類時,我們必須是繼承一個類或者實現一個介面

18、關於匿名內部類說法錯誤的是()

  A.匿名內部類就是一個沒有名字的方法內部類
  B.方法內部類不允許使用訪問許可權修飾符public、private、protected均不允許
  C.方法內部類對外部完全隱藏,除了建立這個類的方法可以訪問它以外,其他地方均不能訪問
  D.匿名內部類可以存在構造方法

19、所有Java類都直接或間接繼承了哪個類?( )

  A.String
  B.Object
  C.Interesting
  D.Hero

20、在JAVA中,Object類是所有類的父親,使用者自定義類預設擴充套件自Object類,下列選項中的( )方法不屬於Object類的方法。

  A.equals(Object obj)
  B.hashcode()
  C.toString()
  D.trim()

21、下面有關Java異常處理模型的說法錯誤的是()

  A.一個try塊只能有一條catch語句
  B.一個try塊中可以不使用catch語句
  C.catch塊不能單獨使用,必須始終與try塊在一起
  D.finally塊不能單獨使用,必須始終與try塊在一起

22、以下關於方法覆蓋描述錯誤的是( )

  A.覆蓋的方法和被覆蓋的方法必須具有完全相同的方法名、引數列表和返回型別
  B.覆蓋的方法的訪問範圍不能比被覆蓋的方法訪問範圍小
  C.覆蓋的方法不能丟擲被覆蓋方法不能丟擲的異常
  D.被覆蓋的方法不能被預設修飾符修飾

23、Java異常處理機制主要為了捕獲( )錯誤,發生錯誤時,將引發異常,該異常由一個Java程式碼塊捕獲

  A.編譯期
  B.執行期
  C.測試期
  D.除錯期

24、String類能繼承嗎()

  A.能
  B.不能
  C.看具體情況
  D.有時能,有時不能

25、關於構造方法的說法正確的是?()

  A.一個類只能有一個構造方法
  B.一個類可以有多個不同名的構造方法
  C.構造方法與類同名
  D.構造方法必須自己顯示定義

二、多選題

  1、現有以下程式碼:
interface W {
}
class Z implements W {
}
class X extends Z {
}
class Y extends Z {
}
  下列哪些程式碼段是正確的?( )。

  A.
  X x=new X();
  Y y=new Y();
  Z z=new Z();
  y=(Y)x;
  B.
  X x=new X();
  Y y=new Y();
  Z z=new Z();
  x=(X)y;
  C.
  X x=new X();
  Y y=new Y();
  Z z=new Z();
  Z=(Z)x;
  D.
  X x=new X();
  Y y=new Y();
  Z z=new Z();
  W w=(W)x;

  2、請選擇所有的正確答案(  )。

  A.在介面中定義的方法預設為private方法
  B.在介面中定義的變數預設為public、static、final的
  C.一個介面可以繼承多個介面
  D.關鍵字implements代表介面之間的繼承關係

三、判斷題

1、與未加訪問控制符的預設情況相比,public和protected修飾符擴大了類及其屬性和方法的被訪問範圍,private修飾符則縮小了這種範圍。(✔ )

2、訪問許可權是private的變數,只能在本類和與本類同一個包中的其他類使用。( X

3、Java中所有的變數,不管是成員變數還是區域性變數,在使用前都必須進行初始化。

4、Java語言為所有的Java程式自動匯入包“java.lang”,因此Java程式可以直接用“java.lang”中的類和介面。(✔ )

5、父類Person中定義了一個private void show()的方法,那麼子類要重寫這個方法時,方法的訪問修飾符可以是預設的,protected或public。(✔ )

6、構造方法中,第一句話總是super。( X

7、將子類物件賦給父類引用變數,稱為向下轉型,將無法訪問子類特有的方法。( X)

8、抽象類和介面都不能例項化,都沒有構造方法。(X

9、匿名內部類適合建立那種只需要使用一次的類,它可以實現一個或多個介面,或者繼承一個父類。( X)

10、抽象方法的類必須是抽象類,同樣抽象類也必須包含抽象方法( X

四、簡答題

1、方法的過載(overload)和重寫(overide)的區別?

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型
性。過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為
過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方
法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。過載對返回型別沒有特殊的要求。
方法過載的規則:
1.方法名一致,引數列表中引數的順序,型別,個數不同。
2.過載與方法的返回值無關,存在於父類和子類,同類中。
3.可以丟擲不同的異常,可以有不同修飾符。
方法重寫的規則:
1.引數列表必須完全與被重寫方法的一致,返回型別必須完全與被重寫方法的返回型別一致。
2.構造方法不能被重寫,宣告為 final 的方法不能被重寫,宣告為 static 的方法不能被重寫,但是能夠被再次
宣告。
3.訪問許可權不能比父類中被重寫的方法的訪問許可權更低。
4.重寫的方法能夠丟擲任何非強制異常(UncheckedException,也叫非執行時異常),無論被重寫的方法是
否丟擲異常。但是,重寫的方法不能丟擲新的強制性異常,或者比被重寫方法宣告的更廣泛的強制性異常,反之則可以

2、final用於修飾變數、方法和類分別有什麼作用?

在Java中,final關鍵字有最終的,不可修改的含義。final關鍵字有三種用途,可以分別應用於變數、成員方法和類。如果將某個變數修飾為final,
那麼該變數就成為常量,常量在宣告時必須初始化,宣告之後不能對其進行二次賦值。 如果將某個成員方法修飾為final,則意味著該方法不能被子類覆蓋,這就和抽象方法必須由子類實現的規定互相矛盾,final和abstract不能同時修飾一個方法。 如果將某個類修飾為final,則說明該類無法被繼承