亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

看不懂?。?/h1>

public class HelloWorld {

? ??

? ? String name; // 聲明變量name

String sex; // 聲明變量sex

static int age;// 聲明靜態變量age

? ??

? ? // 構造方法

public name() {?

System.out.println("通過構造方法初始化name");

name = "tom";

}

? ??

? ? // 初始化塊

{?

System.out.println("通過初始化塊初始化sex");

sex = "男";

}

? ??

? ? // 靜態初始化塊

static {?

System.out.printlnst("通過靜態初始化塊初始化age");

age = 20;

}

? ??

public void show() {

System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age);

}

? ??

public static void main(String[] args) {

? ? ? ??

? ? ? ? // 創建對象

HelloWorld hello = new HelloWorld();

// 調用對象的show方法

? ? ? ? HelloWorld.show();

? ? ? ??

}

}


正在回答

2 回答

錯誤①:構造方法名應與類名相同

②:調用對象show方法應為:hello.show();

2 回復 有任何疑惑可以回復我~

在Java中,有兩種初始化塊:靜態初始化塊和非靜態初始化塊。它們都是定義在類中,用大括號{}括起來,靜態代碼塊在大括號外還要加上static關鍵字。

非靜態初始化塊(構造代碼塊):
作用:給對象進行初始化。對象一建立就運行,且優先于構造函數的運行。
與構造函數的區別:非靜態初始化塊給所有對象進行統一初始化,構造函數只給對應對象初始化。
應用:將所有構造函數共性的東西定義在構造代碼塊中。

靜態初始化塊:
作用:給類進行初始化。隨著類的加載而執行,且只執行一次
與構造代碼塊的區別:
1)構造代碼塊用于初始化對象,每創建一個對象就會被執行一次;靜態代碼塊用于初始化類,隨著類的加載而執行,不管創建幾個對象,都只執行一次。
2)靜態代碼塊優先于構造代碼塊的執行
3)都定義在類中,一個帶static關鍵字,一個不帶static

構造函數、非靜態初始化塊、靜態代碼塊都是用于初始化,三者的執行順序依次是:靜態代碼塊>構造代碼塊>構造函數。
其實初始化塊就是構造器的補充,初始化塊是不能接收任何參數的,定義的一些所有對象共有的屬性、方法等內容時就可以用初始化塊初始化了。

靜態初始化塊的作用就是當JVM在裝載類時,你想讓它做一些事情,那么,就可以用靜態初始化塊。這幾者的執行順序是:

(JVM在裝載類時)先裝載類的靜態成員,再執行靜態初始化塊(同樣,當一個類有繼承自某類時,則會先裝載該父類,那么,父類的裝載或執行順序,也都如句子所述)。

(在創建類的實例時)先執行實例初始化塊,再執行構造方法;但對于一棵繼承樹中,會先調用父類的構造方法,那么其執行順序也如句子所述。


7 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531144    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

看不懂?。?/h1> 我要回答 關注問題

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號