我如果把HelloWorld的構(gòu)造方法改成void,創(chuàng)建對象的時(shí)候就不會(huì)調(diào)用了,必須得單獨(dú)調(diào)用方法,為什么?
我如果把HelloWorld的構(gòu)造方法改成void,創(chuàng)建對象的時(shí)候就不會(huì)調(diào)用了,必須得單獨(dú)調(diào)用方法,為什么?
public class HelloWorld {
int num1;
int num2;
static int num3;
//這里改成void就是不一樣的效果,在主函數(shù)中創(chuàng)建對象的時(shí)候就不會(huì)自動(dòng)調(diào)用這個(gè)方法了,為啥??
public void HelloWorld() {
num1 = 91;
System.out.println("通過構(gòu)造方法為num1變量賦值");
}
{
num2 = 74;
System.out.println("通過初始化塊方式為num2變量賦值");
}
static {
num3 = 100;
System.out.println("通過靜態(tài)初始化塊方式為num3變量賦值");
}
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
//hello.HelloWorld();//單獨(dú)調(diào)用方法的時(shí)候才能打印出"通過構(gòu)造方法為num1變量賦值",否則不可以
System.out.println("num1:"+hello.num1);
System.out.println("num2:"+hello.num2);
System.out.println("num3:"+num3);
HelloWorld hello2 = new HelloWorld();
//hello2.HelloWorld();
}
}
輸出結(jié)果:
通過靜態(tài)初始化塊方式為num3變量賦值
通過初始化塊方式為num2變量賦值
num1:0
num2:74
num3:100
通過初始化塊方式為num2變量賦值
2020-01-19
加了 void 就是一個(gè)無參無返回值的普通方法,沒有提供顯式的構(gòu)造方法,系統(tǒng)就會(huì)使用默認(rèn)構(gòu)造方法,所以就不會(huì)初始化 num1 這個(gè)值了。
2019-12-17
構(gòu)造方法的創(chuàng)建不能加返回值類型