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

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

靜態初始化和直接賦值

public class HelloWorld {

? ? String name="sdd"; // 聲明變量name

String sex="男"; // 聲明變量sex

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

? ? //構造方法

public? HelloWorld() {?

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) {

? ? ? ? // 創建對象

HelloWorld hello = new HelloWorld();

// 調用對象的show方法

? ? ? ? hello.show();

}

}

這個輸出結果和題目給的一樣,但是我直接給全局變量賦值在初始化就沒用了,是不是直接賦值級別比初始化低?那么直接給全局變量復制和初始化區別在哪?

正在回答

2 回答

看了后面章節看懂了

0 回復 有任何疑惑可以回復我~
#1

有態度的網友

請問你開頭寫的 String name="sdd"; // 聲明變量name String sex="男"; // 聲明變量sex static int age=10;// 聲明靜態變量age 這三行在程序中到底有沒有執行呢,是否真的是先被執行過但之后又被初始化塊以及構造方法重新賦值了呢?
2018-07-07 回復 有任何疑惑可以回復我~
#2

孤僻成癮 提問者 回復 有態度的網友

執行了,你把初始化塊和構造方法去掉,建個對象打印出來是有值的。有一節講了,構造函數在直接賦值后才執行的,至于初始化和直接賦值哪個先沒試過
2018-07-07 回復 有任何疑惑可以回復我~
#3

有態度的網友 回復 孤僻成癮 提問者

謝謝!
2018-07-07 回復 有任何疑惑可以回復我~
#4

孤僻成癮 提問者 回復 有態度的網友

https://blog.csdn.net/youanyyou/article/details/78990293補充,我這個理解不全
2018-09-26 回復 有任何疑惑可以回復我~
查看1條回復

想通了,實驗了下,大概是先給成員變量賦值,之后加載類,先靜態初始化-->普通初始化-->構造方法,這三步把成員變量重新賦值了。

0 回復 有任何疑惑可以回復我~
#1

孤僻成癮 提問者

補充https://blog.csdn.net/youanyyou/article/details/78990293
2018-09-26 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

靜態初始化和直接賦值

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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