1. 程式人生 > >錯題總結--黑馬程式設計師之基礎班入班考試

錯題總結--黑馬程式設計師之基礎班入班考試

8、下列關於變數和常量的說法正確的是(AD   )

A. 常量表示不能被改變的值,例如1、2、“abc”都是常量

B. 常量表示常見的變數

C. int x = 0;程式碼中,x表示常量,0表示變數

D. 在同一個大括號{}內,定義的變數不能夠重名

此題答案為A,而我選擇的是D,把A漏了,究其原因是因為對常量的定義認識不夠深刻,常量就是表示不能被改變的值。

11、下列各種符號的定義格式,那種在java語言中是錯誤的變數定義( BD

A. int myVal =1;            B.char $myVal =1;

C.byte _myVal =1;          Dfloat 3.14myVal=1;


此題答案為D,不為B,錯誤原因:對java的變數的命名規則認識不到位。

變數的命名規則:變數名必須以字母,下滑線或者“$”符號開頭,變數命名中可以有數字,但是不能以數字開頭

12、Java語言中的int及char資料型別的長度分別為(C       )

A. 16位和8 位                      B. 8位和16位

C. 32位和16位                     D. 32位和8位


長度所佔位數:byte:8位  int:32位  long:64位  float:32位  double:64位  char:16位

16、語句System.out.println(1+2+"java"+3+4)輸出的結果是(CA

A. 3java34    B.12java34      C. 3java7         D.12java7


這道題選C是跳坑裡面了,沒有注意到前面那段已經變成字串了,所以按照從左往右的拼接邏輯3+4這個是不會運算的只會將其拼接起來。

17、關於下列迴圈語句,寫法正確的是(     ACDB

A. while(true){};   B. for(;;){} C. do{}while(false);  D. for(inta=0;a<5;a++);


這道題寫法太奇葩了,一時拿不準。。。

19、以下關於函式過載的說法正確的有(     ABCD)

A. 方法名必須一樣

B. 與返回值型別無關

C. 引數個數或者順序不一樣

D. 引數型別不一樣


過載的注意事項雖然背過好多次,可是還是容易忘。。。過載:同名不同參,引數個數、順序、型別不一樣,與返回值型別無關。

20、關於陣列的說法,正確的是(     AB)

A. 數組裡面存放的是相同型別的資料

B. 獲取陣列的長度使用length屬性

C. 獲取陣列的大小使用size方法

D. 陣列的長度是可變的


漏選了A,主要是因為平常頻繁使用集合以及Map,很少用陣列導致對陣列的定義不熟。

陣列定義:陣列是基本上所有語言都會有的一種資料型別,它表示一組相同型別的資料的集合,具有固定的長度,並且在記憶體中佔據連續的空間。

24、想要結果輸出為0,則可以做哪些修改?( BC

int [ ] arr = new int[1];    ①

arr[0] = 3;                   ②

System.out.println( arr[1] );  ③

A.  ②處修改為arr[3] = 0;

B.  ③處修改為System.out.println(0)

C.  ①處修改為int [ ] arr = new int[2];

D.  不用修改了,結果就是0

這道題漏選了一個C選項,原因是因為對陣列中預設的資料型別沒有太多 瞭解,陣列中的預設資料值視陣列型別而定,若預設陣列型別為int,double,long這些基本資料型別,預設資料與基本資料型別的預設資料保持一致,若陣列型別為Integer,String此類的物件型別,則預設資料為

null。

25、下列二維陣列定義錯誤的是(     BD

A  int[][] arr =new int[3][2];

B  int arr[][] =new int[3][];

C  int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};

D  int arr[][]={{2,3},{6},9};

答案為D,錯選為B,對二維陣列的資料形式不瞭解,以為大括號裡有三個大括號就是三維陣列。。。(有關二維陣列的相關知識待開班後再做補充)

33、下面程式碼的執行結果是( AD

public staticvoid main(String[] args){

intx = 80;

x++;

switch(x){

case80:

System.out.println(80);

case81:

System.out.println(81);

default:

System.out.println(82);

}

}

A. 80      B. 80 81      C.81      D. 81 82

答案為D錯選為A,原因一:受++x與x++影響,注意:二者的區別是在賦值是存在區別,比如 :

int i=2;
int j=2;
int x = i++;
int y = ++j;
當為這種情況時兩者會有區別的,i++先賦值後加一,++j則是先加一 後賦值。所以,x為2,y為3。但是,

當在程式中僅僅寫i++或者是++i並沒有牽涉到賦值操作時,二者的作用是一樣的。原因二:未注意到這道題沒有break跳出。。。

38、下面程式執行的結果是( AB

       public static void main(String[] args){

              int a = 1;

              if(a++>1){

                     System.out.println(a);

              }else{

                     System.out.println(a);

              }

       }

       A.1 B.2  C.0  D.編譯報錯

應選B錯選A,錯選原因:a++>1這個判斷得出的結果確實是否,在參與比較運算時,a++的值還是為1,但是比較後,輸出a時,a就已經變成了2了。

i++原理:

java的編譯器在遇到i++時,會重新為變數運算分配一塊記憶體空間,以存放原始的值,然後進行自加一操作,若是i++後有賦值運算的話

再將原始值賦過去,然後釋放原始值所佔記憶體。詳情參考:連結:http://blog.sina.com.cn/s/blog_605f5b4f0100khy0.html