Java基礎問答摘錄

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

2.Java有沒有goto?JAVA中如何跳出當前的多重嵌套循環?

3.&&&的區別?

4.switch語句能否作用在byte上,能否作用在long上,能否作用在String?

5.short s1 = 1; s1 = s1 + 1;和 short s1 = 1; s1 += 1;哪個正確?

6.char型變量中能不能存貯一箇中文漢字?爲什麼?

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

8.public void method(final  StringBuffer  param){}中可以修改參數的值嗎? 

9."=="equals方法究竟有什麼區別?

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

 

11.Integerint的區別

12.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

 

 

 

 

1答案:可以有多個類,但public類型的只能有一個,而且這個類的名稱必須和源文件名稱一致!要問爲什麼?因爲這是規定!

2答案:Java裏有goto,但只做保留關鍵字,不起任何作用,即我們不能使用 goto 來進行跳轉到某行。因爲goto會降低程序的可讀性。你可以通過給循環定義標籤來實現跳轉到某行,如定義loop1:for循環,然後你在循環中用break/continue 標籤名來指明跳出或繼續哪個循環。這種方法也是在Java中跳出當前多重嵌套循環的一種方法。你也可以讓外層的循環條件表達式的結果可以受到裏層循環體代碼的控制從而達到跳出當前多重嵌套循環。

3答案:共同點:都可作爲邏輯與的運算符,當運算符兩邊都爲true時運算結果才爲true,否則爲false。

   不同點:一、作爲邏輯與的運算符時,&&具有短路功能,即如果第一個表達式爲false則不再計算後面的表達式,避免後面表達式可能有異常時不會報錯,而&則會可能報空指針等異常。二、&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4bit位,例如,0x31 & 0x0f的結果爲0x01

4答案:switch()的參數只能是一個整數表達式或枚舉常量,因而可以是int類型或Integer包裝類型,而byte、short、char都可以隱含轉換爲int,因此這些類型及他們的包裝類型都可以用於switch,而long和String則不可以

5答案:s1+1在運算時會自動提示表達式類型,所以結果是int類型,在賦值給short類型時則會報需要強制類型轉換的錯誤。而+=是Java規定的運算符,編譯器會對他特殊處理,不會報錯。

6答案:char是用來存貯Unicode編碼的字符的,而絕大部分漢字也包含在內,因此char可以存貯漢字,只有極少個別特殊漢字不包含在內,此時char就不能呢個存貯這些漢字了,注意的是Unicode佔二個字節,所以char變量也是二個字節。

7答案:我們知道將一個數左移n位,就是這個數乘以2的n次方,而位運算是cpu直接支持的,效率最高所以2*8最效率方法是2<<3

8答案:首先我們要清楚被final修飾的變量是引用變量不能改變,但是引用變量所指向的對象的值是可以改變的!這個問題中我們可以用param.append()方法來改變參數值,但不能用param=new StringBuffer()來改變引用對象。

9答案:“==”專門用來比較兩個變量的值是否相等即比較兩個變量對應的內存存貯的數值是否相等,只能用“==”,如果一個變量指向的數據是對象類型的,那麼,這時候涉及了兩塊內存,對象本身佔用一塊內存(堆內存),變量也佔用一塊內存,例如Objet obj = new Object();變量obj是一個內存,new Object()是另一個內存,此時,變量obj所對應的內存中存儲的數值就是對象佔用的那塊內存的首地址。對於指向對象類型的變量,如果要比較兩個變量是否指向同一個對象,即要看這兩個變量所對應的內存中的數值是否相等,這時候就需要用==操作符進行比較。equals方法是用於比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。

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

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

11答案:聯繫:Integer是int的封裝類;區別:int默認值爲0,而Integer默認值爲null,即int則無法表達出未賦值的情況。因此int不適合作爲web層的表單數據的類型

12答案:Math類三種取整方法:Math.ceil(x)   ceil是天花板的意思即向上取整

   Math.floor(x)   floor是地板的意思即向下取整、

   Math.round(x)  round則是四捨五入取整,它等於Math.floor(x+0.5),因此答案是12和-11

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章