【270天】我愛刷題系列(29)

叨叨兩句

  1. 我發現我對熬夜身體累徹底不擔憂,擔憂的只是熬夜傷身體
  2. 原來我是你們的小太陽,哈哈,但願大家和我相處都暖暖的^-^

牛客網——java專項練習009

1

下代碼對其執行後,NumberList裏的元素依次爲:
List<Integer> NumberList =newArrayList<Integer>();
NumberList.add(2);
NumberList.add(4);
NumberList.add(1);
NumberList.add(3);
NumberList.add(5);
for(int i =0;i<NumberList.size();++i)
{
int v = NumberList.get(i);
if(v%2==0)
{
  NumberList.remove(v);
}
}
System.out.println(NumberList);
正確答案: D   你的答案: C (錯誤)

A 2,4,1,3,5
B 2,1,3,5
C 4,1,3,5
D 會出現越界狀況

這題主要考察兩點:
1.ArrayList刪除元素後,剩餘元素會依次向前移動,所以下標一直在變,size()也會減少;
2.remove()方法調用的是remove(int index),而不是remove(Object o),所以刪除的是index索引處的元素;java

該題具體流程:
1.i=0,v=2,remove(2)刪除掉了元素1,所以NumberList剩餘元素【2,4,3,5】;
2.i=1,v=4,remove(4),此時線性表中只有四個元素,不可能刪除索引爲4的元素,所以會報數組下標越界異常。數組

2

關於JAVA堆,下面說法錯誤的是()?
正確答案: C   你的答案: 空 (錯誤)

A 全部類的實例和數組都是在堆上分配內存的
B 堆內存由存活和死亡的對象,空閒碎片區組成
C 數組是分配在棧中的
D 對象所佔的堆內存是由自動內存管理系統回收

3

在使用super 和this關鍵字時,如下描述正確的是
正確答案: A   你的答案: A (正確)

A 在子類構造方法中使用super()顯示調用父類的構造方法,super()必須寫在子類構造方法的第一行,不然編譯不經過
B super()和this()不必定要放在構造方法內第一行
C this()和super()能夠同時出如今一個構造函數中
D this()和super()能夠在static環境中使用,包括static方法和static語句塊

1)調用super()必須寫在子類構造方法的第一行,不然編譯不經過。每一個子類構造方法的第一條語句,都是隱含地調用super(),若是父類沒有這種形式的構造函數,那麼在編譯的時候就會報錯。
2)super()和this()相似,區別是,super從子類中調用父類的構造方法,this()在同一類內調用其它方法。
3)super()和this()均需放在構造方法內第一行。
4)儘管能夠用this調用一個構造器,但卻不能調用兩個。
5)this和super不能同時出如今一個構造函數裏面,由於this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,因此在同一個構造函數裏面有相同的語句,就失去了語句的意義,編譯器也不會經過。
6)this()和super()都指的是對象,因此,均不能夠在static環境中使用。包括:static變量,static方法,static語句塊。
7)從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。函數

4

關鍵字super的做用是?
正確答案: D   你的答案: C (錯誤)

A 用來訪問父類被隱藏的非私有成員變量
B 用來調用父類中被重寫的方法
C 用來調用父類的構造函數
D 以上都是

5

下列哪一種狀況能夠終止當前線程的運行?
正確答案: D   你的答案: D (正確)

A 當一個優先級高的線程進入就緒狀態時
B 當該線程調用sleep()方法時
C 當建立一個新線程時
D 拋出一個異常時

6

下列選項中是正確的方法聲明的是?()
正確答案: A B C D   你的答案: A B C D (正確)

A protected abstract void f1();
B public final void f1() {}
C static final void fq(){}
D private void f1() {}
1.抽象方法只能定義在抽象類中,抽象方法和抽象類必須由abstract修飾,abstract關鍵字只能描述類和方法,不能描述變量。抽象方法只定義方法聲明,不定義方法實現。抽象類不能夠被實例化(建立對象),只有經過子類繼承抽象類並覆蓋抽象類中的全部抽象方法後,該子類才能夠被實例化,不然該子類仍是一個抽象類。抽象類中有構造函數用於給子類對象進行初始化,同時抽象類中能夠含有非抽象方法。abstract關鍵字不能夠與final,private,static關鍵字共存,由於被final修飾的方法不能夠被重寫,意味着子類不能夠重寫該方法,若是abstract和final共同修飾父類中的方法,子類要實現抽象方法(abstract的做用),而final又不讓該方法重寫,這相互矛盾。若是private和abstract共同修飾父類中的方法,private修飾則該方法不能夠被子類訪問,可是abstract修飾須要子類去實現,二者產生矛盾。若是static和abstract共同修飾父類中的方法,static表示是靜態的方法,隨着類的加載而加載,則該方法不須要在子類中去實現,這與abstract關鍵字矛盾。 

2.static用於修飾成員變量和成員函數,想要實現對象中的共性數據的對象共享,能夠將這個數據進行靜態修飾,被靜態修飾的成員能夠直接被類名調用,靜態隨着類的加載而加載,並且優先於對象存在。靜態方法只能訪問靜態成員(靜態方法和靜態變量),不能夠訪問非靜態成員,這是由於靜態方法加載時,優先於對象存在,因此沒有辦法訪問對象中的成員。靜態方法中不能使用this和super關鍵字,由於this表明本類對象,super表明父類對象,而靜態時,有可能沒有對象存在,因此this和super沒法使用。 

3.final關鍵字能夠修飾類,方法,變量(成員變量內,局部變量,靜態變量),被final修飾的類是一個最終類,不能夠被繼承,被final修飾的方法是一個最終方法,不能夠被覆蓋,可是能夠被繼承。被final修飾的變量只能是一個常量,只能賦值一次。內部類被定義在類中的局部位置上時,只能訪問局部被final修飾的局部變量。
相關文章
相關標籤/搜索