收集Java麵試題知識點(Java基礎部分一)
1、String 和StringBuffer、StringBuilder的區別
Java提供了:String、StringBuffer和StringBuilder,它們都是CharSequence的實現類,都可以作為字符串使用。
String代表了字符序列不可變的字符串;而StringBuffer、StringBuilder都代表了字符序列可變的字符串。
StringBuffer、StringBuilder的區別是StringBuffer是線程安全的、性能略低,而StringBuilder是線程不安全的,適合單線程環境使用,性能較好。
2、Collection 和 Collections的區別。
Collection是集合類(List、Set、Queue)的根接口。
Collections是針對集合類的一個工具類,它提供一係列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
3、&和&&的區別
兩者都是邏輯判斷與,但是&&比&多了短路的功能,即如果第一個表達式為false,則不再計算第二個表達式。
4、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
Overload是方法的重載
Override是方法的重寫,也叫覆蓋。
Overload要求兩個方法具有方法名相同、形參列表不同的要求,返回值類型不能作為重載的條件。
Override要求子類方法與父類方法具有“兩同兩小一大”的要求。兩同指:即父類方法、子類方法的方法名相同、形參列表相同;兩小指:子類方法返回值類型要麼是父類方法返回值類型的子類、要麼與父類方法返回值類型相同;子類方法聲明拋出的異常類型要麼是父類方法聲明拋出的異常類型的子類、要麼與父類聲明拋出的異常類型相同;一大指:子類方法的訪問權限要麼與父類方法的訪問權限相同,要麼比父類方法的訪問權限更大。
Overloaded的方法是可以改變返回值的類型。
5、Java如何跳出當前的多重嵌套循環?
在Java中,要想跳出多重循環,可以在外麵的循環語句前定義一個標號,然後在裏層循環體的代碼中使用帶有標號的break 語句,即可跳出外層循環。例如,
outer:
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 ouer;
}
}
6、switch語句能否作用在byte上,能否作用在long上,能否作用在String上?
在Java 7以前,在switch(expr1)中,expr1隻能是一個整數表達式(但不包括long和Long)或者枚舉常量,整數表達式可以是int基本類型或Integer包裝類型,byte、short、char(int以下)都可以自動轉換為int,它們都可作為switch表達式。
從java 7開始,switch表達式的可以使用String。
7、String s = new String(“xyz”);創建了幾個String Object?
兩個。一個是直接量的xyz對象;另一個是通過new Sting()構造器創建出來的String對象。
通常來說,應該盡量使用直接量的String對象,這樣具有更好的性能。
8、數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法,有length的屬性。String有length()方法。
9、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會把s1+=1計算後的結果進行隱式的強製類型轉換,因此它不會有任何錯誤。
10、char型變量中能不能存儲一個中文字符?為什麼?
char型變量是用來存儲Unicode編碼的字符的,Unicode編碼字符集中包含了漢字,因此char型變量中可以存儲漢字。不過,如果某個特殊的漢字沒有被包含在Unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊漢字。
char類型的變量占兩個字節,而Unicode編碼中每個字符也占兩個字節,因此char類型類型的變量可以存儲任何一個Unicode字符。
最後更新:2017-08-28 09:03:43