- 相關(guān)推薦
java 基礎(chǔ)面試題
1.一個".java"源文件中是否可以包括多個類(不是內(nèi)部類)?有什么限制?
可以有多個類,但只能有一個public的類,并且public的類名必須與文件名相一致。
2.&和&&的區(qū)別。
&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時,整個運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。
&&還具有短路的功能,即如果第一個表達(dá)式為false,則不再計算第二個表達(dá)式,例如,對于if(str != null && !str.equals(“”))表達(dá)式,當(dāng)str為null時,后面的表達(dá)式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33 & ++y>0) y會增長,If(x==33&& ++y>0)不會增長
&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數(shù)進(jìn)行&運(yùn)算,來獲取該整數(shù)的最低4個bit位,例如,0x31 &0x0f的結(jié)果為0x01。
3.在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?
在Java中,要想跳出多重循環(huán),可以在外面的循環(huán)語句前定義一個標(biāo)號,然后在里層循環(huán)體的代碼中使用帶有標(biāo)號的break 語句,即可跳出外層循環(huán)。例如,
ok:
for(int i=0;i<10;i++)< p="">
{
for(int j=0;j<10;j++)< p="">
{
System.out.println(“i=” + i + “,j=” + j);
if(j == 5) break ok;
}
}
另外,我個人通常并不使用標(biāo)號這種方式,而是讓外層的循環(huán)條件表達(dá)式的結(jié)果可以受到里層循環(huán)體代碼的控制,例如,要在二維數(shù)組中查找到某個數(shù)字。
booleanfound = false;
for(inti=0;i<10 && !found;i++)
{
for(int j=0;j<10;j++)< p="">
{
System.out.println(“i=” + i + “,j=” + j);
if(j == 5)
{
found = true;
break;
}
}
}
4.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
在switch(expr1)中,expr1只能是一個整數(shù)表達(dá)式或者枚舉常量(更大字體),整數(shù)表達(dá)式可以是int基本類型或Integer包裝類型,由于,byte,short,char都可以隱含轉(zhuǎn)換為int,所以,這些類型以及這些類型的包裝類型也是可以的。顯然,long和String類型都不符合sitch的語法規(guī)定,并且不能被隱式轉(zhuǎn)換成int類型,所以,它們不能作用于swtich語句中。
JDK1.7版本能使用String
5.short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
對于short s1 = 1; s1 = s1 + 1; 由于s1+1運(yùn)算時會自動提升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時,編譯器將報告需要強(qiáng)制轉(zhuǎn)換類型的錯誤。
對于short s1 = 1; s1 += 1;由于 += 是java語言規(guī)定的運(yùn)算符,java編譯器會對它進(jìn)行特殊處理,因此可以正確編譯。
6.垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動通知虛擬機(jī)進(jìn)行垃圾回收?
對于GC來說,當(dāng)程序員創(chuàng)建對象時,GC就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達(dá)的",哪些對象是"不可達(dá)的"。當(dāng)GC確定一些對象為"不可達(dá)"時,GC就有責(zé)任回收這些內(nèi)存空間?梢。程序員可以手動執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語言規(guī)范并不保證GC一定會執(zhí)行。
7.GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達(dá)到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。
【java 基礎(chǔ)面試題】相關(guān)文章:
Java實(shí)習(xí)報告09-20
c面試題08-04
java簡歷的自我評價11-08
java實(shí)習(xí)報告模板11-08
java自我介紹12-06
java實(shí)訓(xùn)報告04-15
java轉(zhuǎn)正申請書07-02
java面試自我介紹05-06