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

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

直接定義對象后,就執行了?不要定義方法嗎?

package com.imooc;


public class Demo1 {

int num1;

int num2;

static int num3;

public Demo1(){

num1=91;

System.out.println("通過構造方法為變量num1賦值");

}

{

num2=74;

System.out.println("通過初始化塊為變量num2賦值");

}

static{

num3=83;

System.out.println("通過靜態初始化塊為靜態變量num3賦值");

}

public static void main(String[] args) {

Demo1 hello=new Demo1();

}?

}

想問一下,Demo1 hello=new Demo1();不是定義hello對象嗎?怎么就直接執行結果了?hello里也沒有num1 ?num2 ? num3 ???

正在回答

3 回答

首先當類被裝載的時候 類的靜態快代碼最先被執行,之后執行構造方法,但是在執行構造方法內的代碼之前先執行初始化代碼塊,初始化代碼塊執行完畢再執行構造方法里的代碼

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

慕數據3565510 提問者

非常感謝!
2017-05-10 回復 有任何疑惑可以回復我~

java在創建對象的時候,是會執行該類的構造方法,以及父類的構造方法的。

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

慕數據3565510 提問者

就是說創建Demo1 hello=new Demo1();就一次執行了3個初始化塊被?那為什么沒執行num 1=91和num2和num3?
2017-05-10 回復 有任何疑惑可以回復我~
#2

慕數據3565510 提問者

鉆牛角尖了,已經執行了,只是沒有輸出
2017-05-10 回復 有任何疑惑可以回復我~

類名Demo01:public class Demo1 {和方法名Demo01:public Demo1(){!

注意這個重點

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

慕數據3565510 提問者

還是不太明白,能說的簡單點嗎,初學者中的小白
2017-05-09 回復 有任何疑惑可以回復我~
#2

慕數據3565510 提問者

是不是說Demo1 hello=new Demo1();執行了Demo1構造方法,然后執行了System.out.println("通過構造方法為變量num1賦值"); 那為什么沒執行num 1=91? 還有System.out.println("通過初始化塊為變量num2賦值");和System.out.println("通過靜態初始化塊為靜態變量num3賦值");為什么也執行了?
2017-05-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

直接定義對象后,就執行了?不要定義方法嗎?

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

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

幫助反饋 APP下載

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

公眾號

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