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

来源:8-10 Java 中的 static 使用之静态初始化块

慕数据3565510

2017-05-09 23:35

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回答

  • 谜之米
    2017-05-10 17:39:01
    已采纳

    首先当类被装载的时候 类的静态快代码最先被执行,之后执行构造方法,但是在执行构造方法内的代码之前先执行初始化代码块,初始化代码块执行完毕再执行构造方法里的代码

    慕数据356...

    非常感谢!

    2017-05-10 17:40:56

    共 1 条回复 >

  • 点点客
    2017-05-10 00:07:33

    java在创建对象的时候,是会执行该类的构造方法,以及父类的构造方法的。

    慕数据356...

    钻牛角尖了,已经执行了,只是没有输出

    2017-05-10 01:25:43

    共 2 条回复 >

  • 浮尘落尽繁华梦
    2017-05-09 23:43:55

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

    注意这个重点

    慕数据356...

    是不是说Demo1 hello=new Demo1();执行了Demo1构造方法,然后执行了System.out.println("通过构造方法为变量num1赋值"); 那为什么没执行num 1=91? 还有System.out.println("通过初始化块为变量num2赋值");和System.out.println("通过静态初始化块为静态变量num3赋值");为什么也执行了?

    2017-05-09 23:59:48

    共 2 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530644 学习 · 6091 问题

查看课程

相似问题