靜態屬性、靜態代碼塊、靜態方法、構造方法、普通方法的執行順序


一、

靜態代碼塊:

是在當類被載入(內存)時,(最先被調用的),靜態代碼塊被執行,且之被執行一次,靜態塊常用來執行類屬性的初始化。執行類的載入之前就會調用。

 

非靜態代碼塊:

是在當類的對象被創建載入(內存)時,(最先被調用的),每創建一個對象,即每載入一個對象,非靜態代碼塊都執行一次。執行類對象的載入之前就會調用。

 

對象載入之前,一定要是類先被載入。

 

靜態方法、非靜態方法:都是調用時,才執行的。靜態方法屬於類的,加載完類就可以調用靜態方法;非靜態方法是屬於對象的,加載完對象就可以調用非靜態方法。

 

加載類的動作沒有什么標志性,但是加載對象的標志動作就是new動作,會去執行

 

更精簡:

靜態代碼塊:類每次加載到內存中調用一次,並最先調用

非靜態代碼塊:類的對象每次加載到內存中調用一次,並最先調用,然后是調用對應的構造方法

靜態方法、非靜態方法:都是進行方法調用時才執行,調用靜態方法,前提是:類已經加載到內存中;調用非靜態方法,前提是類的對象已經加載到內存中。

 

那么,

類什么時候被加載/類加載時機:【即類被使用時,就會加載】
第一:生成該類對象的時候,會加載該類及該類的所有父類;
第二:訪問該類的靜態成員的時候;
第三:class.forName("類名");

 

代碼塊是自動的,方法是被動的。

作用:靜態代碼塊可以用來初始化一些項目最常用的變量和對象;靜態方法可以用作不創建對象也可以能需要執行的代碼。

 

引申:JVM(內存)主要分區:程序計數器、本地方法棧、堆(heap)虛擬機棧(stack)方法區(method)     

堆:放對象實例

棧:局部變量表、操作數棧、動態鏈接、方法出口(程序上下文)

方法區:被虛擬機加載的類信息、常量、靜態變量、及時編譯器編譯后的代碼。

http://www.tuicool.com/articles/eyI73u

 

有類繼承的情況也一樣分析:先加載子類的類,那么要加載父類的類,之后new一個子類,那么之前也要new一個父類

 

 

 

 

 二、

iterable接口:集合類實現了iterable接口,調用接口的iterator()方法可以生成一個迭代器。iterator迭代器也是一個接口,集合類不直接實現它的原因是調用iterator()方法可以生成下標從0開始的迭代器。

enumeration接口:迭代器接口,類似於iterator。

區別:enumeration只有hasMoreElements()、nextElement()兩個方法,而iterator有hasNext()、next()、remove()三個方法,多了一個刪除功能。

vector可以使用enumeration,所有集合類都可以使用iterator。

 

 

http://www.blogjava.net/seaairland/articles/44367.html

 

 三、

在Java里面參數傳遞都是按值傳遞:(由不同角度考慮)

按值傳遞是傳遞的值的拷貝,按引用傳遞其實傳遞的是引用的地址值,可以統稱為按值傳遞。

 

四、date

 

五、

java回調:

就是說,被調用方在被調用時也會調用對方,這就叫回調。“If you call me, i will call back”。

 

http://www.brieftools.info/

http://www.hztarena.org/Html/soft/201212/1762.html

http://www.51cto.com/specbook/24/6720.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM