Java易混淆知識點
2. String s = new String("xyz");建立了幾個String Object?
3. abstract class和interface有什麼區別?
4. ==和equals的區別?
5. Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?
6. 介面與抽象類的區別
7. 介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
8.
9. 基本資料型別間的轉換
10. String是最基本的資料型別嗎?
11. int 和 Integer 有什麼區別
12. String 和StringBuffer的區別
13. JSP的內建物件和JSP的標記
19. 靜態方法與靜態變數的使用
20. Static Nested Class 和 Inner Class的不同。
21. Collection 和 Collections的區別。
22. JSP中動態INCLUDE與靜態INCLUDE的區別?
23. 靜態變數和例項變數的區別?
24. finally子句的執行時間
25. 談談final, finally, finalize的區別。
26. try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?
27. JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以丟擲異常嗎?
1. 陣列有沒有length()這個方法? String有沒有length()這個方法?
答:陣列沒有length()這個方法,有length的屬性。
String有length()這個方法。
2. String s = new String("xyz");建立了幾個String Object?
答:兩個物件,一個是“xyx”,一個是指向“xyx”的引用物件s。
3. abstract class和interface有什麼區別?
答:宣告方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要建立一個體現某些基本行為的類,併為該類宣告方法,但不能在該類中實現該類的情況。不能建立abstract 類的例項。然而可以建立一個變數,其型別是一個抽象類,並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法。Abstract
類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程式體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程式體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何物件上呼叫介面的方法。由於有抽象類,它允許使用介面名作為引用變數的型別。通常的動態聯編將生效。引用可以轉換到介面型別或從介面型別轉換,instanceof
運算子可以用來決定某物件的類是否實現了介面.
4. ==和equals的區別?
答:==用於判斷兩個引用變數是否指向同一個物件例項.
equals用於判斷兩個值是否相等.
5. Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?
答:Set裡的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一物件equals()在類中被覆蓋,為的是當兩個分離的物件的內容和型別相配的話,返回真值。
6. 介面與抽象類的區別
答: 抽象類中的非抽象方法可以不被子類覆蓋,但是介面中的所有方法必須被子類實現
抽象類和子類之間是一種父子關係,如A是B;但介面和實現類之間沒有明顯的父子關係,而是一種功能性的關係。如A具有B的功能。
7. 介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
答:介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的建構函式。
8. java中有幾種型別的流?JDK為每種型別的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
答: 位元組流,字元流。位元組流繼承於InputStream \ OutputStream,字元流繼承於InputStreamReader \ OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高效能和使用方便。
9. 基本資料型別間的轉換
答: byte->short->int->long->float->double
char->int
詳細見<<java核心技術第一卷V6>>
10. String是最基本的資料型別嗎?
答:基本資料型別包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final型別的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類。
11. int 和 Integer 有什麼區別
答:Java 提供兩種不同的型別:引用型別和原始型別(或內建型別)。int是java的原始資料型別,Integer是java為int提供的封裝類。Java為每個原始型別提供了封裝類。
原始型別封裝類
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用型別和原始型別的行為完全不同,並且它們具有不同的語義。引用型別和原始型別具有不同的特徵和用法,它們包括:大小和速度問題,這種型別以哪種型別的資料結構儲存,當引用型別和原始型別用作某個類的例項資料時所指定的預設值。物件引用例項變數的預設值為 null,而原始型別例項變數的預設值與它們的型別有關。
12. String 和StringBuffer的區別
答:JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字串,即包含多個字元的字元資料。這個String類提供了數值不可改變的字串。而這個StringBuffer類提供的字串進行修改。當你知道字元資料要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字元資料。
13. JSP的內建物件和JSP的標記
答:9種內建物件
request,response,pageContext,session,application,out,config,page,exception
19. 靜態方法與靜態變數的使用
靜態方法可以通過類名直接訪問,靜態變數在同一類的不同的例項之間共享。
20. Static Nested Class 和 Inner Class的不同。
Static Nested Class是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化。
21. Collection 和 Collections的區別。
Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.。Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作。
22. JSP中動態INCLUDE與靜態INCLUDE的區別?
動態INCLUDE用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數。
靜態INCLUDE用include偽碼實現,定不會檢查所含檔案的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
23. 靜態變數和例項變數的區別?
static i = 10; //常量
class A a; a.i =10;//可變
24. finally子句的執行時間
都會執行,除非在前面出現system.exit(0)
25. 談談final, finally, finalize的區別。
final 用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。
26. try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。
27. JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以丟擲異常嗎?
Java通過面向物件的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個物件,它是Throwable類或其它子類的例項。當一個方法出現異常後便丟擲一個異常物件,該物件中包含有異常資訊,呼叫這個物件的方法可以捕獲到這個異常並進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程式,如果出現異常,系統會丟擲(throws)一個異常,這時候你可以通過它的型別來捕捉(catch)它,或最後(finally)由預設處理器來處理。
用try來指定一塊預防所有"異常"的程式。緊跟在try程式後面,應包含一個catch子句來指定你想要捕捉的"異常"的型別。
throw語句用來明確地丟擲一個"異常"。
throws用來標明一個成員函式可能丟擲的各種"異常"。
Finally為確保一段程式碼不管發生什麼"異常"都被執行一段程式碼。
可以在一個成員函式呼叫的外面寫一個try語句,在這個成員函式內部寫另一個try語句保護其他程式碼。每當遇到一個try語句,"異常"的框架就放到堆疊上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆疊就會展開,直到遇到有處理這種"異常"的try語句。