黑馬程序員-java基礎 static 和 單例

---------------------- 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培訓 、期待與您交流! ----------------------

詳細請查看:http://edu.csdn.net/heima

發佈了32 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章