java代碼塊
❶ java中靜態代碼塊的作用跟用法
Java靜態代碼塊的作用:Java靜態代碼塊中的代碼會在類載入JVM時運行,且只被執行一次,也就是說這些代碼不需要實例化類就能夠被調用。一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,就需要使用靜態代碼塊。
Java靜態代碼塊的用法:一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。例如:
static
{
int
a=0;
}
❷ Java 邏輯代碼塊是什麼
java邏輯代碼塊是指使用{}大括弧內的代碼片段,為了實現某種邏輯和主類區分開來的一段代碼。分為靜態代碼塊、普通代碼塊,示例如下:
/**
*靜態代碼塊先於構造器執行普通塊先於構造塊只執行一次
*凡是靜態的與對象無關,先於對象存在的;凡是靜態的都是共享的
*
*/
publicclassTest{
static{//靜態代碼塊
System.out.println("static");
}
{
System.out.println("普通塊2");
}
publicTest(){
System.out.println("構造器");
}
❸ Java的靜態塊和初始化塊分別何時執行有什麼區別
靜態初始化塊:當類第一次載入時執行。
非靜態初始化塊:非靜態初始化塊會在構造函數執行時,且在構造函數主體代碼執行之前被執行。
區別如下:
1、執行次數不同
靜態塊只執行一次,初始化塊可以執行多次。
2、作用不同
靜態初始化塊僅能初始化類變數,即static修飾的數據成員。
非靜態初始化塊可以初始化類的實例變數。
(3)java代碼塊擴展閱讀:
使用Java靜態代碼塊注意事項:
1、它是隨著類的載入而執行,只執行一次,並優先於主函數。具體說,靜態代碼塊是由類調用的。類調用時,先執行靜態代碼塊,然後才執行主函數的。
2、靜態代碼塊其實就是給類初始化的,而構造代碼塊是給對象初始化的。
3、靜態代碼塊中的變數是局部變數,與普通函數中的局部變數性質沒有區別。
4、一個類中可以有多個靜態代碼塊。
5、對於靜態變數、靜態初始化塊、變數、初始化塊、構造器,它們的初始化順序依次是(靜態變數、靜態初始化塊)>(變數、初始化塊)>構造器。
❹ java中的靜態代碼塊、代碼塊、構造器的執行順序是怎樣呢,這三者有什麼作用呢
先說執行順序:我們在new一個對象時,如果類還沒載入,就需要先將類載入到內存,此時就會執行靜態代碼塊,在創建對象時,是先執行代碼塊,然後執行構造器。所以靜態代碼塊、代碼塊、構造器的執行順序是:靜態代碼塊→代碼塊→構造器。
再說作用:靜態代碼塊是用於初始化類的(在載入類時執行,只執行一次),代碼塊是用於初始化對象的(在創建對象時執行,每次創建對象時都執行),構造器是用於創建對象的。
❺ java構造代碼塊的作用是什麼
//構造塊:直接在類中定義且沒有加static關鍵字的代碼塊稱為{}構造代碼塊。構造代碼塊在創建對象時被調用,每次創建對象都會被調用,並且構造代碼塊的執行次序優先於類構造函數。
public class CodeBlock02
{
{
System.out.println("第一代碼塊");
}
public CodeBlock02(){
System.out.println("構造方法");
}
{
System.out.println("第二構造塊");
}
public static void main(String[] args){
new CodeBlock02();
new CodeBlock02();
new CodeBlock02();
}
}
/**
執行結果:
第一代碼塊
第二構造塊
構造方法
第一代碼塊
第二構造塊
構造方法
第一代碼塊
第二構造塊
構造方法*/
❻ Java常見代碼塊的作用與區別
1. 局部代碼塊
作用在方法當中,作用是控制變數的生命周期:
public void show(){
{
System.out.println("局部代碼塊運行!");
}
}123456
在程序中當我們定義完成一個局部變數x之後,並且在接下來的代碼中,不想再用到它時,那麼就沒必要讓x在內存中繼續佔用空間。因此就有了局部代碼塊。
2. 構造代碼塊
作用在類的定義Body中,作用是給類的部分欄位統一初始化:
public class Apple {
private String size;
//構造代碼塊
{
System.out.println("構造代碼塊運行!");
size = "E";
}
}
12345678910
構造代碼塊與構造函數的區別是:構造代碼塊是給所有對象進行統一初始化,而構造函數是給對應的對象初始化,因為構造函數是可以多個的,運行哪個構造函數就會建立什麼樣的對象,但無論建立哪個對象,都會先執行相同的構造代碼塊。也就是說,構造代碼塊中定義的是不同對象共性的初始化內容。所以理所當然的,構造代碼塊在構造函數之前執行。
3. 靜態代碼塊
作用有兩個:
(1)給類的靜態變數賦值;
(2)聲明靜態變數;
作用在類的Body中,對類中的靜態變數初始化:
public class APP {
static int x, y; // 靜態變數
static {
x = 5; // 給靜態變數x賦值
}
public static void myMethod() {
y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值
}
public static void main(String[] args) {
x--;
myMethod();
System.out.println(x + y + ++x);
}
}
輸出:23
❼ java中,代碼塊(初始化塊)和構造函數的區別是什麼
代碼塊有構造代碼塊和靜態代碼塊,靜態代碼塊是類載入的時候執行的,一共只執行一次,構造代碼塊是創建類對象的時候執行的,創建一個對象執行一次,代碼塊都是用於初始化的,而構造函數是用於創建對象的。
❽ 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中,構造代碼塊和構造函數有什麼區別
構造代碼塊:是給所有的對象進行初始化,也就是說,所有的對象都會調用一個代碼塊,只要對象一建立,就會調用這個代碼塊。
構造函數:是給與之對應的對象進行初始化,它具有針對性。