錯題總結--黑馬程式設計師之基礎班入班考試
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