java錯題簿
(1)如果父類中的某個方法使用了 synchronized關鍵字,而子類中也覆蓋了這個方法,預設情況下子類中的這個方法並不是同步的,必須顯示的在子類的這個方法中加上 synchronized關鍵字才可。
(2)介面可以多繼承可以被多實現
(3)對於區域性內部類,只有在方法的區域性變數被標記為final或區域性變數是effctively final的,內部類才能使用它們
(4)呼叫普通內部類:
EnclosingOne.InsideOne ei=eo.new InsideOne();
InsideOne ei=eo.new InsideOne();
(5)JDBC提供了Statement、PreparedStatement 和 CallableStatement三種方式來執行查詢語句,其中 Statement 用於通用查詢, PreparedStatement 用於執行引數化查詢,而 CallableStatement則是用於儲存過程
(6)java繼承中對建構函式是不繼承的,只是顯式或者隱式呼叫
(7)intValue()是把Integer物件型別變成int的基礎資料型別;
parseInt()是把String 變成int的基礎資料型別;
Valueof()是把String 轉化成Integer物件型別;
(8)位元組流:
InputStream
|-- FileInputStream (基本檔案流)
|-- BufferedInputStream
|-- DataInputStream
|-- ObjectInputStream
字元流
Reader
|-- InputStreamReader (byte->char 橋樑)
|-- BufferedReader (常用)
Writer
|-- OutputStreamWriter (char->byte 橋樑)
|-- BufferedWriter
|-- PrintWriter (常用)
(9)run()方法用來執行執行緒體中具體的內容
start()方法用來啟動執行緒物件,使其進入就緒狀態
(10)① 虛擬機器中沒有泛型,只有普通類和方法。 ② 在編譯階段,所有泛型類的型別引數都會被Object或者它們的限定邊界來替換。(型別擦除) ③ 在繼承泛型型別的時候,橋方法的合成是為了避免型別變數擦除所帶來的多型災難。
(11)1. 每次從記憶體中取值,不從快取中什麼的拿值。這就保證了用 volatile修飾的共享變數,每次的更新對於其他執行緒都是可見的。
2. volatile保證了其他執行緒的立即可見性,就沒有保證原子性。
3.由於有些時候對 volatile的操作,不會被儲存,說明不會造成阻塞。不可用與多執行緒環境下的計數器。
(12)異常分為執行時異常,非執行時異常和error,其中error是系統異常,只能重啟系統解決。非執行時異常需要我們自己補獲,而執行異常是程式執行時由虛擬機器幫助我們補獲,執行時異常包括陣列的溢位,記憶體的溢位空指標,分母為0等!
(13)java 1.8開始支援介面中定義靜態方法
(14)陣列有length屬性,字串只有length()方法