全局變量在main方法中出現不能將一個非靜態變量賦值給靜態變量
public?class?HelloWorld?{ ?static?int?var=1;//去掉static就不對了,為什么 ?void?call() ?{?int?cal; ?System.out.println("var:"+var);} ? ?void?sendMessage() ?{int?cal; ??System.out.println("var"+var);} ? ?public?static?void?main(String[]?args)?{ ????//int?var=5; ????HelloWorld?phone=new?HelloWorld(); ??phone.call(); ??System.out.println(var);//為什么var一定要是static類型,如果不是static就會報錯 ???????} ????????}
2015-08-11
”不能將非靜態變量賦值給靜態變量“,這個一個標準的蠢貨級別定義,新手很容易因為這種被蠢貨總結的”經驗“失去了刨根問底的動力。
原理:
static為類加載的時候執行,發生在創建對象之前,此時非static可以理解為還未"出生"。
而非static需要在創建對象的時候才可以使用。
所以如果static的方法和屬性都不能調用非static,而反之可以。
2015-08-15
thanks a lot
2015-08-09
main函數是static