本文目錄一覽:
- 1、Java關於代碼塊的問題
- 2、java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢
- 3、java中詳解靜態代碼塊,構造代碼塊,構造方法。求簡單易懂的解釋
- 4、Java的靜態塊和初始化塊分別何時執行?有什麼區別?
- 5、java中,代碼塊(初始化塊)和構造函數的區別是什麼?
- 6、java中靜態代碼塊的作用跟用法
Java關於代碼塊的問題
這個是因為你的代碼寫在匿名內部類裡面,java在類里只允許聲明成員變數和函數,是不能直接寫代碼的。
代碼邏輯應該寫在函數內部。
java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢
先說執行順序:我們在new一個對象時,如果類還沒載入,就需要先將類載入到內存,此時就會執行靜態代碼塊,在創建對象時,是先執行代碼塊,然後執行構造器。所以靜態代碼塊、代碼塊、構造器的執行順序是:靜態代碼塊→代碼塊→構造器。
再說作用:靜態代碼塊是用於初始化類的(在載入類時執行,只執行一次),代碼塊是用於初始化對象的(在創建對象時執行,每次創建對象時都執行),構造器是用於創建對象的。
java中詳解靜態代碼塊,構造代碼塊,構造方法。求簡單易懂的解釋
靜態代碼塊:只要一用到某個類,那麼這個類的靜態代碼塊就先執行,比如:
public class Dog(){
int i = 0;
static {
i = 1;
}
public Dog(){
i = 2;
}
}
當你new 一個Dog()對象時,首先i= 1 會執行,然後才執行 public Dog(){}這個方法。
pulic Dog() 是與類同名、沒有返回值的方法,也就是構造方法。
構造方法的作用是用來初始化一個對象的。比如你可以在裡面寫 i = 2;
那麼當你 Dog d = new Dog()執行這段代碼的時候,是這樣的:
首先 i = 0 ;
然後執行static 靜態代碼塊,此時i= 1;
最後執行public Dog(); i = 2;
Java的靜態塊和初始化塊分別何時執行?有什麼區別?
靜態初始化塊:當類第一次載入時執行。
非靜態初始化塊:非靜態初始化塊會在構造函數執行時,且在構造函數主體代碼執行之前被執行。
區別如下:
1、執行次數不同
靜態塊只執行一次,初始化塊可以執行多次。
2、作用不同
靜態初始化塊僅能初始化類變數,即static修飾的數據成員。
非靜態初始化塊可以初始化類的實例變數。
擴展資料:
使用Java靜態代碼塊注意事項:
1、它是隨著類的載入而執行,只執行一次,並優先於主函數。具體說,靜態代碼塊是由類調用的。類調用時,先執行靜態代碼塊,然後才執行主函數的。
2、靜態代碼塊其實就是給類初始化的,而構造代碼塊是給對象初始化的。
3、靜態代碼塊中的變數是局部變數,與普通函數中的局部變數性質沒有區別。
4、一個類中可以有多個靜態代碼塊。
5、對於靜態變數、靜態初始化塊、變數、初始化塊、構造器,它們的初始化順序依次是(靜態變數、靜態初始化塊)(變數、初始化塊)構造器。
java中,代碼塊(初始化塊)和構造函數的區別是什麼?
代碼塊有構造代碼塊和靜態代碼塊,靜態代碼塊是類載入的時候執行的,一共只執行一次,構造代碼塊是創建類對象的時候執行的,創建一個對象執行一次,代碼塊都是用於初始化的,而構造函數是用於創建對象的。
java中靜態代碼塊的作用跟用法
Java靜態代碼塊的作用:Java靜態代碼塊中的代碼會在類載入JVM時運行,且只被執行一次,也就是說這些代碼不需要實例化類就能夠被調用。一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,就需要使用靜態代碼塊。
Java靜態代碼塊的用法:一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。例如:
static
{
int a=0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232125.html