2一、靜態嵌套類和內部類的不一樣?
答:靜態嵌套類是被聲明爲靜態(static)的內部類,它能夠不依賴於外部類實例被實例化。而一般的內部類須要在外部類實例化後才能實例化。//仍是考的static的知識java
下面的代碼哪些地方會產生編譯錯誤?程序員
class Outer {編程
class Inner {}安全
public static void foo() { new Inner(); }this
public void bar() { new Inner(); }spa
public static void main(String[] args) {線程
new Inner();設計
}指針
}對象
Java中非靜態內部類對象的建立要依賴其外部類對象,foo和main方法都是靜態方法,靜態方法沒有this,也就是說沒有所謂的外部類對象,所以沒法建立內部類對象,若是要在靜態方法中建立內部類對象,能夠:new Outer().new Inner();
2二、抽象的方法是否能夠被static,native,synchronized修飾?
不能,靜態方法沒法被重寫,而抽象方法須要被子類重寫;本地方法是由本地代碼實現的,而抽象方法沒有實現;synchronized關鍵字和方法實現的細節有關,抽象方法不涉及實現細節。
2三、靜態變量和實例變量的區別。
靜態變量:被static修飾,也稱爲類變量,因此它屬於類不屬於對象。一個類無論建立了多少個對象,靜態變量在內存中有且只有一個拷貝。靜態變量能夠實現讓多個對象共享內存。
實體變量:必須依賴於某一實例,須要先建立對象而後經過對象才能訪問到它//記住一個屬於類,另外一個屬於對象
2四、能夠從一個靜態方法內部發出對非靜態方法的調用?
不對,靜態方法只能訪問靜態成員,由於非靜態方法的調用要先建立對象,在調用靜態方法時可能對象並無被初始化//寫個靜態方法本身試試唄
2五、對象克隆
實現Cloneable接口並重寫Object類中的clone()方法;
實現Serializable接口,經過對象的序列化和反序列化實現克隆,能夠實現真正的深度克隆
//話說clone對象好用不?
2六、運行時異常與受檢異常有何異同?
異常表示程序運行過程當中可能出現的非正常狀態,運行時異常表示虛擬機的一般操做中可能遇到的異常,是一種常見運行錯誤,只要程序設計得沒有問題一般就不會發生。受檢異常跟程序運行的上下文環境有關,即便程序設計無誤,仍然可能因使用的問題而引起。Java器要求方法必須聲明拋出可能發生的受檢異常,可是並不要求必須聲明拋出未被捕獲的運行時異常。異常和繼承同樣,是面向對象程序設計中常常被濫用的東西,在Effective Java中對異常的使用給出瞭如下指導原則:
- 不要將異常處理用於正常的控制流(設計良好的API不該該強迫它的調用者爲了正常的控制流而使用異常)
- 對能夠恢復的狀況使用受檢異常,對編程錯誤使用運行時異常
- 避免沒必要要的使用受檢異常(能夠經過一些狀態檢測手段來避免異常的發生)
- 優先使用標準的異常
- 每一個方法拋出的異常都要有文檔
- 保持異常的原子性
- 不要在catch中忽略掉捕獲到的異常
列出一些你常見的運行時異常?
答:
- ArithmeticException(算術異常)
- ClassCastException (類轉換異常)
- IllegalArgumentException (非法參數異常)
- IndexOutOfBoundsException (下標越界異常)
- NullPointerException (空指針異常)
- SecurityException (安全異常)
2七、GC是什麼?爲何要有GC?
GC是垃圾收集的意思,內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會致使程序或系統的不穩定甚至崩潰,Java提供的GC功能能夠自動監測對象是否超過做用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操做方法。Java程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。要請求垃圾收集,能夠調用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM能夠屏蔽掉顯示的垃圾回收調用。
垃圾回收能夠有效的防止內存泄露,有效的使用可使用的內存。垃圾回收器一般是做爲一個單獨的低優先級的線程運行,不可預知的狀況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清除和回收,程序員不能實時的調用垃圾回收器對某個對象或全部對象進行垃圾回收。
//垃圾必須被回收掉,不論是生活仍是·······
2八、接口是否能夠繼承接口?抽象類可否可實現接口?抽象類是否可繼承具體類?
接口能夠繼承接口,並且支持多重繼承。抽象類能夠實現接口,抽象類可繼承具體類也能夠繼承抽象類。
29 、 .java源文件
一個.java源文件能夠包含多個類,但一個源文件中最多隻能有一個公開類並且文件名必須和公開類的類名徹底保持一致。
30、匿名內部類(Anonymous Inner Class)是否能夠繼承其它類?是否能夠實現接口?
能夠繼承其餘類或實現其餘接口,在Swing編程和Android開發中經常使用此方式來實現事件監聽和回調。