为什么这课例题后期明明只调用了构造方法可是为什么普通初始化块也执行了??
public class HelloWorld { int num1; //声明变量num1 int num2; //声明变量num2 static int num3; //声明静态变量num3 //构造方法 public HelloWorld() { 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) { HelloWorld hello = new HelloWorld(); //使用构造方法创建对象hello System.out.println("num1:" + hello.num1); System.out.println("num2:" + hello.num2); System.out.println("num3:" + num3); HelloWorld hello2 = new HelloWorld(); //就是他 } }
rt,如果说静态只执行一次那么他不输出是必然,,构造方法执行也是因为创建对象的附加效应,可是"无亲无故"的普通初始化话块为什么也会执行,而且为什么会在构造方法前面执行????
此外,构造方法不应该只执行这里面的吗???普通初始化块怎么做到的
//构造方法 public HelloWorld() { num1 = 91; System.out.println("通过构造方法为变量num1赋值"); }