簡單說來,靜態方法能夠不用建立對象就調用,非靜態方法必須有了對象的實例才能調用.所以想在靜態方法中引用非靜態方法是不可能的,由於它究竟引用的是哪一個對象的非靜態方法呢?編譯器不可能給出答案,由於沒有對象啊,因此要報錯 函數
class HelloWorld this
{
int a1 = 6;
public static void main(String[] args)
{
System.out.print(a1);
/** 成員變量不能直接調用 ( 沒法從靜態上下文中引用非靜態變量 a1 )
*/
}
}
spa
只要不是static修飾的方法,必需要經過對象進行引用。在非靜態方法裏,可能省略了(this)。在靜態的方法裏,看看有沒有你這個方法所在類的對象。沒有確定報錯。 指針
樓主,你好。由於靜態方法的調用不是經過實例對象進行的,因此在靜態方法中沒有this指針,不能訪問所屬類的非靜態變量和方法,只能訪問方法體內的局部變量、本身的參數和靜態變量。因此你在在static的主函數裏調用非static的方法時確定報錯。因此你把方法放到另外一個類,建立對象再調用,不會出錯,由於你這個方法不是靜態的,即不是屬於類的,而是屬於具體的一個實例對象的,用對象調用那固然不會錯咯!
對象
只要記住這一點:
用statci修飾的成員是屬於類的,在static的方法裏能夠用類名直接調用;
不用statci修飾的成員是屬於具體實例對象的,須要用對象名調用,且在static的方法裏不能夠調用。
ci