11、談談final,finally,finalize的區別? java
1.final:是修飾符,是一個關鍵字。修飾變量,若是是基本類型表示該變量的值不能修改;若是是引用類型表示該變量不能指向別的對象;修飾類,表示該類不能被繼承;修飾方法,表示該方法不能被重寫。 數據庫
2. finally:是在try-catch-finally塊中配套使用。通常用於資源清理工做:流的關閉,以及數據庫的關閉等。 編程
3. finalize:是Object的方法,是GC運行機制的一部分。沒有特別要求的話,通常不須要咱們調用該方法,交給GC本身管理就好。Java中容許使用 finalize()方法在垃圾收集器將對象從內存中清除出去以前作必要的清理工做,但其具體執行時間點是沒法肯定的。子類能夠覆蓋finalize()方法以整理系統資源或者執行其餘清理工做。 安全
12、error和exception有什麼區別? 多線程
相同點:Error類和Exception類都繼承Throwable類。 編程語言
不一樣點: ui
1.Error表示系統級錯誤和或低層資源的錯誤。是java運行環境中的內部錯誤或者硬件問題,好比,內存資源不足等。這種問題不可能期望經過程序能處理。 spa
2.Exception表示須要捕捉或者須要程序進行處理的異常,它是因爲程序設計有問題而產生的,能夠經過程序來解決。包括編譯時異常(必須捕獲)和運行時異常(能夠不捕獲)。 線程
十3、當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞? 設計
是值傳遞。Java編程語言中只有值傳遞沒有引用傳遞的說法。當一個對象實例做爲一個參數被傳遞到方法中時,這個參數的值就是該對象的引用(該對象的地址)。對象的內容能夠在被調用的方法中改變,但對象的引用即地址是永遠不會改變的。
十4、做用域public,private,protected,以及不寫時的區別
對於這個題,只要看懂這個圖就沒問題了。
做用域 當前類 同包 不一樣包子孫類 其餘包
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫時默認爲friendly
十5、33.String 和StringBuffer有什麼差異?在什麼狀況下使用它們?
區別:
1.String是字符串常量,一旦建立就不能修改,每次對String操做都是產生一個新的字符串對象;
2.StringBuffer和StringBuilder是字符串可變量,能夠修改,操做的始終是原對象。可是StringBuffer是線程安全的(效率低),StringBuilder是線程不安全的(效率高)。
選擇:若是不多修改,使用String,畢竟它最簡單; 若是常常修改,且是單線程,使用StringBuilder(最經常使用); 若是常常修改,且是多線程,使用StringBuffer。