1. final、finally和finalize的區(qū)別:
- final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
- finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
- finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋方法提供垃圾收集時的其他資源的回收,比如關(guān)閉文件等。
2. 關(guān)于序列化:
- 對象序列化的所屬類需要實現(xiàn)Serializable接口
- 使用ObjectOutputStream和ObjectInputStream可以將對象進行傳輸
- 聲明為static和transient類型的成員不能被串行化。因為static代表類的狀態(tài),transient代表對象的臨時數(shù)據(jù)。
3. Collection和Collections的區(qū)別:
- Collection是java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。
- Collections是java.util下的類,它包含各種有關(guān)集合操作的靜態(tài)方法。
4.關(guān)于構(gòu)造方法的幾點注意事項
5. 關(guān)于類的名字的獲取:
package test;
import java.util.Date;
public class SuperTest extends Date {
private void test(){
System.out.println(getClass().getName());
System.out.println(super.getClass().getName());
}
public static void main(String[] args){
new SuperTest().test();
}
}
輸出結(jié)果:
extend.SuperTest
extend.SuperTest
TestSuper和Date的getClass都沒有重寫,因此調(diào)用的是Object的getClass,而Object的getClass作用是返回運行時類的名字。
6. static的初始化:
public class Test {
static int cnt = 6;
static {
cnt += 9;
}
public static void main(String[] args){
System.out.println("cnt= " + cnt);
}
static {
cnt /= 3;
}
}
輸出結(jié)果:
cnt= 5
初始化順序:
1.先父類,后子類
2.先屬性,后構(gòu)造函數(shù)
3.先靜態(tài),后非靜態(tài)
4.先靜態(tài)屬性,后靜態(tài)代碼塊
5.同一類型(非數(shù)據(jù)類型,指以上),按代碼先后順序
7. 接口的變量定義:
public interface IService { String NAME = "default"; }
接口中的變量默認為public static final的,方法默認為public abstract的
8. 訪問修飾符作用范圍:
Paste_Image.png