閱讀175 返回首頁    go 阿裏雲 go 技術社區[雲棲]


常見的java基礎麵試題匯總-01

1、一個".java"源文件中是否可以包括多個類(不是內部類)?有什麼限製? 

可以有多個類,但隻能有一個public的類,並且public的類名必須與文件名相一致。

2、Java有沒有goto? 

 

java中的保留字,由於它是跳轉語句,使用時過於靈活,現在沒有在java中使用。

 

3、說說&和&&的區別。 

&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,隻要有一方為false,則結果為false。

&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,例如,對於if(str != null && !str.equals(“”))表達式,當str為null時,後麵的表達式不會執行,所以不會出現NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33 & ++y>0) y會增長,If(x==33 && ++y>0)不會增長

&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。 

 

備注:這道題先說兩者的共同點,再說出&&和&的特殊之處,並列舉一些經典的例子來表明自己理解透徹深入、實際經驗豐富。 

 

4、在JAVA中如何跳出當前的多重嵌套循環? 

在Java中,要想跳出多重循環,可以在外麵的循環語句前定義一個標號,然後在裏層循環體的代碼中使用帶有標號的break 語句,即可跳出外層循環。例如,

ok:

for(int i=0;i<10;i++)

{

for(int j=0;j<10;j++)

{

System.out.println(i= + i + ,j= + j);

if(j == 5) break ok;

}

另外,我個人通常並不使用標號這種方式,而是讓外層的循環條件表達式的結果可以受到裏層循環體代碼的控製,例如,要在二維數組中查找到某個數字。

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

boolean found = false;

for(int i=0;i<arr.length && !found;i++)

{

for(int j=0;j<arr[i].length;j++)

{

System.out.println(i= + i + ,j= + j);

if(arr[i][j]  == 5) 

{

found = true;

break;

}

}

 

 

5、switch語句能否作用在byte上,能否作用在long上,能否作用在String上? 

在switch(expr1)中,expr1隻能是一個整數表達式或者枚舉常量(更大字體),整數表達式可以是int基本類型或Integer包裝類型,由於,byte,short,char都可以隱含轉換為int,所以,這些類型以及這些類型的包裝類型也是可以的。顯然,long和String類型都不符合switch的語法規定,並且不能被隱式轉換成int類型,所以,它們不能作用於swtich語句中。 

6、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? 

對於short s1 = 1; s1 = s1 + 1; 由於s1+1運算時會自動提升表達式的類型,所以結果是int型,再賦值給short類型s1時,編譯器將報告需要強製轉換類型的錯誤。

對於short s1 = 1; s1 += 1;由於 += 是java語言規定的運算符,java編譯器會對它進行特殊處理,因此可以正確編譯。 

7、char型變量中能不能存貯一個中文漢字?為什麼? 

char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型變量中當然可以存儲漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊漢字。補充說明:unicode編碼占用兩個字節,所以,char類型的變量也是占用兩個字節。

備注:後麵一部分回答雖然不是在正麵回答題目,但是,為了展現自己的學識和表現自己對問題理解的透徹深入,可以回答一些相關的知識,做到知無不言,言無不盡。 

8、用最有效率的方法算出2乘以8等於幾? 

2 << 3

因為將一個數左移n位,就相當於乘以了2的n次方,那麼,一個數乘以8隻要將其左移3位即可,而位運算cpu直接支持的,效率最高,所以,2乘以8等於幾的最效率的方法是2 << 3

最後更新:2017-04-03 15:21:51

  上一篇:go 血淚史:七種IT失誤讓你直接走人
  下一篇:go Java麵向對象高級--final關鍵字