黑馬程式設計師——java基礎語法的常見面試題
阿新 • • 發佈:2019-02-18
Java中針對整數常量提供了四種表現形式
A:二進位制由0,1組成。以0b開頭。
B:八進位制由0,1,...7組成。以0開頭。
C:十進位制由0,1,...9組成。整數預設是十進位制。
D:十六進位制
由0,1,...9,a,b,c,d,e,f(大小寫均可)組成。以0x開頭。
資料型別轉換
1)預設轉換
A:從小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之間不相互轉換,直接轉成int型別參與運算。
2)強制轉換
A:從大到小
B:可能會有精度的損失,一般不建議這樣使用。
C:格式:
目標資料型別 變數名 = (目標資料型別) (被轉換的資料);
3)思考題和麵試題:
A:下面兩種方式有區別嗎?
float f1 = 12.345f;//正常賦值
float f2 = (float)12.345;//涉及了強制型別轉換
B:下面的程式有問題嗎,如果有,在哪裡呢?
byte b1 = 3;//先判斷是否在byte範圍,如果在則直接賦值
byte b2 = 4;
byte b3 = b1 + b2;//這裡是有問題的,因為變數在運算時會先轉換為int型別參與運算,不能把int型別的值賦值給byte型別
byte b4 = 3 + 4;
C:下面的操作結果是什麼呢?
byte b = (byte)130;//因為byte的範圍是-128--127之間,當數值超過範圍後會進行數值迴圈,此時的值應該是-126
D:常見字元的值
'a'97
'A'65
'0'48
賦值運算子:
short s = 1;
s = s + 1;//變數參與運算後得到的結果是int型別,無法賦值給short型別的資料
short s = 1;
s += 1;//隱含了強制轉換
請問上面的程式碼哪個有問題?
迴圈語句
switch語句的表示式可以是byte嗎?可以是long嗎?可以是String嗎?
可以,不可以,JDK7以後可以。JDK5以後可以是列舉,JDK7以後可以是字串
A:default可以省略嗎? 可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。 特殊情況: case就可以把值固定。 A,B,C,D B:break可以省略嗎? 可以省略,但是結果可能不是我們想要的。 會出現一個現象:case穿透。 最終我們建議不要省略 C:default一定要在最後嗎? 不是,可以在任意位置。但是建議在最後。
/*
看程式寫結果——case穿透
*/
class SwitchTest {
public static void main(String[] args) {
int x = 2;
int y = 3;
switch(x){
default:<span style="white-space:pre"> </span>//由於case語句中沒有與x的值相同的,所以走default語句,
y++;
break;<span style="white-space:pre"> </span>//break結束語句
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);<span style="white-space:pre"> </span>//4
System.out.println("---------------");
int a = 2;
int b = 3;
switch(a){
default:<span style="white-space:pre"> </span>//沒有與x值相同的case,走default語句
b++;<span style="white-space:pre"> </span>//沒有break語句,繼續向下執行
case 3:
b++;
case 4:
b++;<span style="white-space:pre"> </span>//到末位結束
}
System.out.println("b="+b);<span style="white-space:pre"> </span>//6
}
}
for(int x=1; x<=10; x++) {
if(x%3 == 0) {
//補齊程式碼
}
System.out.println("Java基礎班");
}
如何讓控制檯輸出2次:Java基礎班——break
如何讓控制檯輸出7次:Java基礎班——continue
如何讓控制檯輸出13次:Java基礎班——System.out.println("Java基礎班");