贏在面試之JAVA基礎篇

本文轉自JAVA知音。
java

一、一個".java"源文件中是否能夠包括多個類(不是內部類)?有什麼限制?程序員

能夠有多個類,但只能有一個public的類,而且public的類名必須與文件名相一致。面試

二、Java有沒有goto?設計模式

java中的保留字,如今沒有在java中使用。l數組

三、說說&和&&的區別。app

&和&&均可以用做邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都爲true時,整個運算結果才爲true,不然,只要有一方爲false,則結果爲false。框架

&&還具備短路的功能,即若是第一個表達式爲false,則再也不計算第二個表達式,例如,對於if(str!=ide

null&& !str.equals(s))表達式,當str爲null時,後面的表達式不會執行,因此不會出現NullPointerException若是將&&改成&,則會拋出NullPointerException異常。If(x==33學習

&++y>0) y會增加,If(x==33 && ++y>0)不會增加字體

&還能夠用做位運算符,當&操做符兩邊的表達式不是boolean類型時,&表示按位與操做,咱們一般使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果爲0x01。

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

在Java中,要想跳出多重循環,能夠在外面的循環語句前定義一個標號,而後在裏層循環體的代碼中使用帶有標號的break語句,便可跳出外層循環。

例如:

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

for(intj=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

for(intj=0;j

System.out.println(「i=」

+ i + 「,j=」 + j);

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

{

found =true;

break;

}

}

}

五、switch語句可否做用在byte上,可否做用在long上,可否做用在String上?

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

六、short s1= 1; s1 = (s1+1是int類型,而等號左邊的是short類型,因此須要強轉)1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?(沒有錯)

對於short s1= 1; s1 = s1 + 1;因爲s1+1運算時會自動提高表達式的類型,因此結果是int型,再賦值給short類型s1時,編譯器將報告須要強制轉換類型的錯誤。

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

七、char型變量中能不能存貯一箇中文漢字?爲何?

char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,因此,char型變量中固然能夠存儲漢字啦。不過,若是某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊漢字。補充說明:unicode編碼佔用兩個字節,因此,char類型的變量也是佔用兩個字節。

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

2<<

3,(左移三位)由於將一個數左移n位,就至關於乘以了2的n次方,那麼,一個數乘以8只要將其左移3位便可,而位運算cpu直接支持的,效率最高,因此,2乘以8等於幾的最效率的方法是2<< 3。

九、使用final關鍵字修飾一個變量時,是引用不能變,仍是引用的對象不能變?

使用final關鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內容仍是能夠改變的。例如,對於以下語句:

finalStringBuffer a=new

StringBuffer("immutable");執行以下語句將報告編譯期錯誤:

a=new StringBuffer("");可是,執行以下語句則能夠經過編譯:

a.append(" broken!");

有人在定義方法的參數時,可能想採用以下形式來阻止方法內部修改傳進來的參數對象:

public void method(final StringBuffer

param){

}

實際上,這是辦不到的,在該方法內部仍然能夠增長以下代碼來修改參數對象:

param.append("a");

10,靜態變量和實例變量的區別?

在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。

在程序運行時的區別:實例變量屬於某個對象的屬性,必須建立了實例對象,其中的實例變量纔會被分配空間,才能使用這個實例變量。靜態變量不屬於某個實例對象,而是屬於類,因此也稱爲類變量,只要程序加載了類的字節碼,不用建立任何實例對象,靜態變量就會被分配空間,靜態變量就能夠被使用了。總之,實例變量必須建立對象後才能夠經過這個對象來使用,靜態變量則能夠直接使用類名來引用。

例如,對於下面的程序,不管建立多少個實例對象,永遠都只分配了一個staticVar變量,而且每建立一個實例對象,這個staticVar就會加1;可是,每建立一個實例對象,就會分配一個instanceVar,便可能分配多個instanceVar,而且每一個instanceVar的值都只自加了1次。

public class VariantTest{

publicstatic int staticVar = 0;

publicint instanceVar = 0;

publicVariantTest(){

staticVar++;

instanceVar++;

System.out.println(staticVar

+instanceVar);

}

}

好了同窗們,我能介紹的也都所有介紹完給大家了,以上的部分就是我想說的內容,若是你也想在IT行業拿高薪,能夠參加咱們的JAVA全棧晉階訓練營課程,選擇最適合本身的課程學習,技術大牛親授,7個月後,進入名企拿高薪。咱們的課程內容有:反射原理、枚舉原理與應用、註解原理、經常使用設計模式、正規表達式高級應用、JAVA操做Office原理詳解、JAVA圖像處理技術,等多個知識點的詳解和實戰。若是你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優點的,想進阿里面試但擔憂面試不過的,你均可以來,羣:240448376注:加羣要求

一、具備1-3工做經驗的,面對目前流行的技術不知從何下手,須要突破技術瓶頸的能夠加。

二、在公司待久了,過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的能夠加。

三、若是沒有工做經驗,但基礎很是紮實,對java工做機制,經常使用設計思想,經常使用java開發框架掌握熟練的,能夠加。

四、以爲本身很牛B,通常需求都能搞定。可是所學的知識點沒有系統化,很難在技術領域繼續突破的能夠加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工做經驗的梳理和總結,帶着你們全面、科學地創建本身的技術體系和技術認知!

6.小號或者小白之類加羣一概不給過,謝謝。

最後,每一位讀到這裏的網友,感謝大家能耐心地看完。以爲對你有幫助能夠給個喜歡!但願在成爲一名更優秀的Java程序員的道路上,咱們能夠一塊兒學習、一塊兒進步

相關文章
相關標籤/搜索