---------------------- android培訓 、java培訓 、期待與您交流! ----------------------
static關鍵字: 是一個修飾符,用於修飾成員變量和方法。表示此成員是靜態成員。 static修飾的成員放在棧內
存中。訪問靜態成員,還可以直接用類名.靜態成員名。
static特點:1隨着類的加載而加載 2優先與對象存在 3被所有類共享 4可以直接用類名調用
靜態成員變量和普通成員變量的區別:
1 存放位置 靜態成員變量隨着類的加載而存在於方法區中,普通成員變量隨着對象的建立而存在於堆內存中
2 生命週期 靜態成員變量生命週期最長,隨着類的消失而消失。普通成員變量隨着對象的消失而消失
當對象中出現共享數據時,應該把該數據定義爲靜態
static實用注意事項:1靜態方法只能直接訪問靜態成員,不能直接訪問非靜態的成員 2 靜態方法中不能定義this
super關鍵字
main方法(主方法):
public static void main(String[] args){}
public:代表該方法訪問權限是最大的
static:代表main方法是靜態的 隨着類的加載就已存在。
void: main方法沒有具體的返回值。
main: 不是關鍵字。但是是一個特殊的單詞,可以被jvm識別
(String[] args): 方法的參數 參數類型是一個數組,參數的元素是一個字符串數組
靜態代碼塊:隨着類的加載而執行,只執行一次。用於給類初始化。優先於main方法
格式
public MyClass{
static{
靜態代碼塊的代碼
}
}
內存執行過程:
public Class Person{
public static void main(String[] args){
Person p = new Person()
}
}
當執行erson p = new Person() 這句代碼時 ,在內存中執行過程如下
1 因爲new用到了Person.class,所以會先找到Person.class文件並加載到內存中
2 執行該類的static代碼塊,如果有的話,給Person.class類初始化
3 在堆內存中開闢空間,分配內存地址。
4 在堆內存中建立對象的特有屬性,並默認初始化
5 對對象進行顯示初始化
6 對對象進行構造代碼塊初始化
7 對對象進行構造函數初始化
8 講內存地址付給棧內中中的P變量
設計模式 初步瞭解之單例模式
保證對象唯一
設計思想:1 爲了避免其他程序過多建立該類對象。先靜止其他程序建立該類對象。
2 還爲了其他程序可以訪問到該類對象,只好在本類中自定義一個對象。
3 爲了方便其他程序對自定義對象的訪問,可以對外提供一些訪問方法。
代碼體現:1 將構造函數初始化
2 在類中建立一個本類對象
3 提供一個方法可以獲取到該對象
//單例類
public class Single {
private int age;;
private static Single s = new Single();
private Single(){
}
public static Single getInstance(){
return s;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//main方法測試下
public class Test {
public static void main(String[] args) {
Single s = Single.getInstance();
s.setAge(23);
Single s1 = Single.getInstance();
System.out.println(s.getAge());
System.out.println(s1.getAge());
}
}
輸出結果 s.age=23
s2.age=23
當s.setAge(23)後,s1.getAge()得到的值也是23 ,說明他們訪問的是一個對象
---------------------- android培訓 、java培訓 、期待與您交流! ----------------------