问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

我如果把HelloWorld的构造方法改成void,创建对象的时候就不会调用了,必须得单独调用方法,为什么?

我如果把HelloWorld的构造方法改成void,创建对象的时候就不会调用了,必须得单独调用方法,为什么?

public class HelloWorld {

int num1;

int num2;

static int num3;

//这里改成void就是不一样的效果,在主函数中创建对象的时候就不会自动调用这个方法了,为啥??

public void HelloWorld() {

num1 = 91;

System.out.println("通过构造方法为num1变量赋值");

}

{

num2 = 74;

System.out.println("通过初始化块方式为num2变量赋值");

}

static {

num3 = 100;

System.out.println("通过静态初始化块方式为num3变量赋值");

}

public static void main(String[] args) {

HelloWorld hello = new HelloWorld();

//hello.HelloWorld();//单独调用方法的时候才能打印出"通过构造方法为num1变量赋值",否则不可以

System.out.println("num1:"+hello.num1);

System.out.println("num2:"+hello.num2);

System.out.println("num3:"+num3);

HelloWorld hello2 = new HelloWorld();

//hello2.HelloWorld();

}

}

输出结果:

通过静态初始化块方式为num3变量赋值

通过初始化块方式为num2变量赋值

num1:0

num2:74

num3:100

通过初始化块方式为num2变量赋值


提问者:M机器猫M 2019-12-17 00:56

个回答

  • qq_五年_5
    2020-01-19 20:21:28

    加了 void 就是一个无参无返回值的普通方法,没有提供显式的构造方法,系统就会使用默认构造方法,所以就不会初始化 num1 这个值了。

  • qq_寂寞的纠缠_prxBRU
    2019-12-17 09:30:10

    构造方法的创建不能加返回值类型