<一> 全局變量和局部變量的區別
1.位置不一樣
全局變量存在類下面,局部變量存在方法裏面。
全局變量的生命週期和對象有關,局部變量的生命週期和方法有關。
2.修飾符
全局變量是可以加修飾符的。局部變量不可以。
3.默認值問題
全局變量只聲明是可以直接使用的,有默認值,局部變量不可以。
<二> 爲什麼在靜態的方法裏面不能使用非靜態的成員
1. 因爲靜態的方法是隨着類的加載而進入內存的,非靜態的成員是創建對象之後進入存的,
2. 當靜態的方法在內存的時候,非靜態的成員還不存在,所以沒辦法使用。
<三> 靜態變量和非靜態變量的區別
1.靜態的變量時隨着類的加載而進入內存的,非靜態的方法是隨着對象的創建進入內存的。
2.靜態的方法裏面只能使用靜態的變量。
3.靜態的變量多了一種調用方式,可以通過類名.屬性名字直接調用。
<四> 封裝:
將實現的細節因隱藏起來,提供共有的方法訪問。
屬性的封裝的步驟:
1.將屬性都定義成私有的,
2.提供setter和getter方法
3.在方法中添加判斷語句
<五> 訪問修飾符的權限:
1.public 公共訪問權限 所有的類都能訪問
2.protected 子類訪問權限 在同一個包 子類都可以訪問
3.缺省的 包訪問權限 在同一包可以訪問
4.private 類訪問權限 只有本類能夠訪問
<六> 包:
當前類在哪一個包的下面: package 包名字
當前類調用其它包下的類:import 包的名字
<七> 繼承:
當子類繼承父類,子類能夠使用父類可見所有的屬性和方法
1.父類私有的屬性和方法是不能訪問的。
2.不同包下,父類缺省的屬性和方法是不能訪問的。
<八> 子類創建對象的順序:
1.先調用子類的構造器
2.然後調用父類的構造器
3.父類信息初始化(有的話)
4.父類的對象創建完成
5.子類信息初始化(有的話)
6.最後子類的對象創建完成。
<九> this
當前調用的方法所在的類的對象的引用
一般情況下都可以省略。
特別:
1.當局部變量和全局變量名字一樣的時候,使用全局變量的時候this不能省略。
2.this不能使用在靜態的方法裏面。
this只能使用的在非靜態的方法中(沒有static修飾的方法中)
如 int a = 10;
public void show(){
int a = 100;
System.out.println("a=" +a);
System.out.println("全局變量a="+this.a);
} //主函數省略
// a=100 全局變量a=10
<十> super
當前調用的方法所在的類的父類對象的引用
一般情況下都是省略的。
特別:
1.當子類的屬性和方法與父類的屬性和方法的名字是一樣的時候,使用父類的屬性方法super不能省略。
2.super不能使用在靜態的方法裏面。
3.當重新指定要調用的構造器的時候super(參數列表)不能省。
<十一> 成員內部類
位置類的成員位置。
特點:
1.可用private protected修飾的。
2.可以直接訪問類的屬性和方法。
3.其它外部類訪問內部類
內部類 別名 = new 外部類.new 內部類();
<十二> 局部內部類:
位置:定義在方法裏面。
特點:
1.不能用訪問修飾符或者static來修飾。
2.生命週期和方法有關,只能在本方法裏面使用。
3.當局部內部類要使用所在的方法的局部變量或者參數的時候,這些變量要定義成final類型的。
<十三>GC出現的原因:
1.查詢的數據庫沒有關閉遊標;
2.構造Adapter時,沒有使用緩存ConvertView
3.沒有及時釋放對象的引用
4.Bitmap對象不再使用時沒有及時調用recycle()釋放內存