1.訪問修飾符java
當前類 同一個包 子類 其餘包 算法
public ✔ ✔ ✔ ✔ide
protected ✔ ✔ ✔ ✘this
default ✔ ✔ ✘ ✘對象
private ✔ ✘ ✘ ✘繼承
2.overload與override的區別:接口
重載overload表示同一個類中能夠有多個名稱相同的方法,但這些方法的參數列表各不相同;override則表示子類和父類的某個方法的名稱和參數徹底相同,經過建立的實例對象調用該方法時,將調用子類中定義的方法,至關於把父類中的方法覆蓋了。生命週期
3.抽象類和接口的區別內存
抽象類不能建立實例對象,抽象類中的方法沒必要是抽象的,接口能夠說成是抽象類的一種特例,接口中的全部方法都必須是抽象的。get
1.抽象類能夠有構造方法,接口中不能有構造方法
2.抽象類能夠有普通成員變量,接口中沒有普通成員變量。
3.抽象類中包含非抽象的普通方法,接口中的全部方法必須都是抽象的,不能有非抽象的普通方法
4.抽象類中的抽象方法的訪問類型public,protected;接口只能是public
5.抽象類中包含靜態方法,接口中不能包含靜態方法
6.抽象類和接口中均可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型任意,接口中只能是public static final
4.內部類是一個類內部定義的類,內部類不能定義靜態成員;匿名內部類必須繼承其餘類或實現其餘接口
5. 多態是經過動態綁定實現的,就是在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法。
6.static,final
final變量:一旦被初始化,就沒法改變它的值
final final方法:不容許子類覆蓋
final類:不能被繼承,由於類中的成員或成員方法沒有機會被覆蓋
static變量:被static修飾的變量,叫靜態變量;
static static方法:靜態方法能夠直接經過類名調用,任何的實例也均可以調用,不能用this或super,不能訪問實例變量和實例方法,只能訪問所屬類的靜態成員變量和成員方法。
static代碼塊:static代碼塊也叫靜態代碼塊,是在類中獨立於類成員的static語句塊,能夠有多個,位置能夠隨便放,它不在任何的方法體內,JVM加載類時會執行這些靜態的代碼塊,若是static代碼塊有多個,JVM將按照它們在類中出現的前後順序依次執行它們,每一個代碼塊只會被執行一次
7.JVM是加載class文件是經過ClassLoader和它的子類來實現的
8.java經過垃圾回收器來自動地把再也不被使用的存儲空間釋放掉。垃圾回收器主要有3個任務:分配內存,確保被引用對象的內存不被錯誤的回收以及回收再也不被引用的對象的空間。
9.複製回收算法:把堆分紅兩個大小相同的域,在任什麼時候刻,只要其中的一個域被使用,直到這個區域被消耗完爲止,此時垃圾回收器會中斷程序的執行,經過遍歷的方式把全部活動的對象複製到另外一個區域中,在複製的過程當中他們是緊挨着佈置的,從而消除了內存碎片。缺點就是須要兩倍的內存空間,代價很大。須要中斷程序,下降了程序的執行效率。
10.按代回收:因爲程序建立的大部分對象的生命週期都很短,只有一部分對象有較長的週期,所以:能夠把堆分紅兩個或多個堆,每一個子堆視爲一代,算法在運行過程當中優先收集那些年幼的對象,若是一個對象被屢次回收依然存活,那麼就能夠把這個對象轉移到高一級的堆裏,減小對其掃描的次數