Java基礎總結 一

2021-08-07 07:24:29 字數 2451 閱讀 8142

1.  建構函式

建構函式的作用:可以用於給物件乙個初始化。

當乙個類中沒有定義建構函式時,那麼系統會預設給該類加乙個空引數的建構函式。當自己定義了乙個建構函式時,預設的建構函式就沒有了。

2. 構造**塊

作用:給物件進行初始化

物件一建立就執行,而且優先順序大於建構函式

的執行。

構造**塊和建構函式的區別:

構造**塊是給所有的物件進行統一初始化的。而建構函式是給對應的物件初始化的。

構造**塊中定義的是不同物件共性的初始化內容。

3.  static的特點

1.隨著類的載入而載入。也就是說:靜態會隨著類的消失而消失,說明它的生命週期最長

2.優先於物件存在:明確一點:靜態先存在,物件是後存在的。

3.被所有物件所共享

4.可以直接被類名所呼叫。

例項變數和類變數的區別:

1.存放位置。

類變數隨著類的載入而存在於方法區中。

例項變數隨著物件的建立而存在於堆記憶體中。

2.生命週期

類變數生命週期長,隨著類的消失而消失。

例項變數生命週期隨著物件的消失而消失。

靜態使用注意事項:

1.靜態方法只能直接訪問靜態成員。不能直接訪問非靜態成員,如果希望在靜態方法中訪問非靜態變數,可以通過建立類的物件,然後通過物件間接的訪問非靜態變數.

非靜態方法即可以訪問靜態也可以訪問非靜態。

2.靜態方法中不可以定義this,super關鍵字。

因為靜態優先於物件存在。所以靜態方法中不可以出現this。

3.主函式是靜態的。

靜態的利和弊:

利處:對物件的共享資料進行單獨空間的儲存,節省空間,可以直接被類名呼叫。

弊端:生命週期過長。訪問出現侷限性。(靜態雖好,只能訪問靜態)

4.        靜態**塊

格式:static

特點:靜態初始化塊只在類載入時執行,且只會執行一次,同時靜態初始化塊只能給靜態變數賦值,不能初始化普通的成員變數。而構造**塊隨著物件的建立而執行,每建立一次物件就執行一次構造**塊。優先順序:靜態**塊》構造**塊(普通初始化塊)>構造方法。

(靜態**塊、構造**塊和構造方法的區別  參考: 

person p=new person();這句話都做了什麼事情?

1.因為new用到了person.class。所以會找到person.class檔案並載入到記憶體中。

2.執行該類中的static**塊、如果有的話,給person.class類進行初始化。

3.在堆記憶體中開闢空間、分配記憶體空間。

4.在堆記憶體中建立物件的特有屬性。並進行預設初始化。

5.對屬性進行顯示初始化。

6.對物件進行構造**塊初始化。

7.將記憶體進行對應建構函式初始化

8.將記憶體位址賦值給棧記憶體中的p

5.      設計模式  (參考:  

)設計模式:解決某一類問題最行之有效的方法。

單例設計模式:解決乙個類在記憶體只存在乙個物件。

想要保證物件的唯一:

1.為了避免其他程式過多建立該類對類物件。先禁止其他程式建立該類物件。

2.還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件。

3.為了方便其他程式對自定義物件的訪問,可以對外提供一些訪問方式。

這三部怎**中體現?

1.將建構函式私有化。

2.在類中建立乙個本類物件。

3.提供乙個方法可以獲取到該物件。

對於事物該怎麼描述還怎麼描述。

當需要將該事物的物件保證在記憶體中唯一時,就將以上的三步加上即可。

/* * 這個是先初始化物件

* 稱為:餓漢式

* single類一進記憶體,就已經建立好了物件。由於private static single s=new single(); */

class single

private static single s=new single();

public static single getinstance() }

/* * 物件是方法被呼叫時,才初始化,也叫做物件的延時載入。稱為:懶漢式

* single類進記憶體,物件還沒有存在,只有呼叫getinstance方法,才建立物件。 */

class single1

private static single1 s=null; /*

*此處可以加乙個synchronized(同步),使只有乙個執行緒可以進入該方法,避免錯亂。

* 但是每次只有乙個執行緒可以進入導致該方法效率低。

public static synchronized single1 getinstance() */

/*以下方法更為高效*/

public static single1 getinstance()

}      

return s; }

}

java基礎部分總結(一)

收穫 1points i new point 解決 在這裡對類陣列中的元素申請分配空間。2除錯debug,在console裡面看問題,在variables看id傳送有什麼問題 參考這篇 新增絕對路徑 比如 d helloworld.txt 要麼寫成 要麼寫成 length 陣列的屬性 length ...

java基礎總結

float 賦值時後邊加f 如 float ff 1.2f 靜態變數 宣告時前邊 static 如static int x 0 資料型別轉換 低精度可以直接轉換成高精度,高精度轉換成低精度 需要顯示型別轉換 int x 50 float y x 顯示轉換 int a int 45.23 foreac...

Java基礎總結

1.string的理解 string s hello world 宣告的內容 乙個指向物件的引用,名為 s 可以指向型別為string的任何物件,目前指向 hello world 這個string型別的物件 string string s 明了另外乙個只能指向string物件的引用,名為string...