java類的初始化塊/執行順序,實例化對象數據賦值


java里初始化一個類的對象,通過初始化快或者構造方法進行數據賦值。與其相關的執行代碼有這么幾種:

  • 靜態初始化塊
  • 初始化塊
  • 構造方法

靜態初始化塊

靜態初始化塊只在類加載時執行一次,同時靜態初始化塊只能給靜態變量賦值,不能初始化普通的成員變量。


非靜態初始化塊

非靜態初始化塊在每次初始化實例對象的時候都執行一次,可以給任意變量賦值。


構造方法

在每次初始化實例對象時調用。


重點:執行順序->

  1. 在加載類時執行一次靜態初始化塊(之后不再調用)。
  2. 在每次初始化實例對象時:先執行非靜態初始化塊,再執行構造方法。

若是概念不好懂,請看如下實例:

package com.mgh;

public class Main { String name; // 聲明變量name String sex; // 聲明變量sex static int age;// 聲明靜態變量age // 構造方法 public Main() { System.out.println("通過構造方法初始化name"); name = "tom"; } // 初始化塊 { System.out.println("通過初始化塊初始化sex"); sex = "男"; } // 靜態初始化塊 static { System.out.println("通過靜態初始化塊初始化age"); age = 20; } public void show() { System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age); } public static void main(String[] args) { // 創建對象 Main obj1 = new Main(); Main obj2 = new Main(); // 調用對象的show方法 obj1.show(); obj2.show(); } } output: 通過靜態初始化塊初始化age 通過初始化塊初始化sex 通過構造方法初始化name 通過初始化塊初始化sex 通過構造方法初始化name 姓名:tom,性別:男,年齡:20 姓名:tom,性別:男,年齡:20


免責聲明!

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



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