一、
靜態代碼塊:
是在當類被載入(內存)時,(最先被調用的),靜態代碼塊被執行,且之被執行一次,靜態塊常用來執行類屬性的初始化。執行類的載入之前就會調用。
非靜態代碼塊:
是在當類的對象被創建載入(內存)時,(最先被調用的),每創建一個對象,即每載入一個對象,非靜態代碼塊都執行一次。執行類對象的載入之前就會調用。
對象載入之前,一定要是類先被載入。
靜態方法、非靜態方法:都是調用時,才執行的。靜態方法屬於類的,加載完類就可以調用靜態方法;非靜態方法是屬於對象的,加載完對象就可以調用非靜態方法。
加載類的動作沒有什么標志性,但是加載對象的標志動作就是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