为了账号安全,请及时绑定邮箱和手机立即绑定

直接定义对象后,就执行了?不要定义方法吗?

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下载
官方微信