為什么我的這個(gè)靜態(tài)變量不是優(yōu)先,而且第二次創(chuàng)建對(duì)象的時(shí)候,static初始化塊還會(huì)出現(xiàn)?跟講的不一樣
public class HelloWorld{
?? ?int num1;
?? ?int num2;
?? ?static int num3;
??? public HelloWorld(){
?? ?num1=10;
?? ?System.out.println("通過構(gòu)造方法為變量num1賦值");
??? }
???? {
?? ?num2=20;
?? ?System.out.println("通過初始化塊為變量num2賦值");
??? }
?? {
?? ?num3=30;
?? ?System.out.println("通過靜態(tài)初始化塊為變量num3賦值");
??? }
????? public static void main(String[] args){
?? ?HelloWorld hello=new HelloWorld();
?? ?System.out.println("調(diào)用num1:"+hello.num1);
?? ?System.out.println("調(diào)用num2:"+hello.num2);
?? ?System.out.println("調(diào)用num3:"+num3);
?? ?HelloWorld hello2=new HelloWorld();
??? }
}
2020-02-09
2020-10-26
static {
?? ?num3=30;
?? ?System.out.println("通過靜態(tài)初始化塊為變量num3賦值");
??? }
這里加上static
2020-03-23
我從內(nèi)存管理給你解釋一下為什么吧,static稱為靜態(tài)變量,它在內(nèi)存管理中單獨(dú)放在一塊內(nèi)存中,程序開始的時(shí)候需要經(jīng)歷先編譯在執(zhí)行,如果聲明的該變量是static,那么就會(huì)在編譯的時(shí)候就直接把該變量放到了內(nèi)存區(qū)里面()注意這是在程序還沒有開始執(zhí)行的時(shí)候),如果你后面初始化模塊前不加static的話,會(huì)導(dǎo)致程序是順序執(zhí)行的,只有到執(zhí)行的時(shí)候才會(huì)賦值(而不是編譯的時(shí)候),所以這里兩個(gè)都需要加static
2020-02-05
同意樓上看法,在13行加static
2020-02-01
你改成
static
{
?? ?num3=30;
?? ?System.out.println("通過靜態(tài)初始化塊為變量num3賦值");
??? }
下面的“通過靜態(tài)初始化塊為num3賦值”不就沒了嗎?
2020-01-09
因?yàn)槟愕膎um3不是在靜態(tài)初始化塊中賦值的。。
你少加了個(gè)static
2020-01-06
對(duì)問題補(bǔ)充下