報錯原因:
static方法不能直接使用類變量和類方法
解決辦法:
1.將變量和方法加static修飾符
2.將類實例化,調用實例化後的變量和方法
任何程序最終都是在內存中執行的,變量只有在內存中佔有一席之地時才能被訪問,不在內存中的變量就不能被訪問。類的靜態成員(變量和方法)都屬於類本身,在類加載的時候就會分配內存,可以通過類名直接訪問;
非靜態成員(變量和方法)屬於類的對象,所以只有在類的對象產生(創建類的實例)時纔會分配內存,然後通過類的對象(實例)去訪問。
由於靜態成員在類加載的時候就會被分配內存,而非靜態成員則不會。因此,在一個類的靜態成員中去訪問其非靜態成員會出錯,是因爲在類的非靜態成員不存在的時候,類的靜態成員就已經存在了,訪問一個內存中不存在的東西當然會出錯。
而類又是在什麼時候加載的呢?核心類(比如String類)在 JVM 啓動時(main 方法開始執行前)就會被加載,其它類在使用前(實例化對象、調用其靜態方法、訪問靜態域等前)會被動態加載。
需注意:子類被加載前,它的所有超類要根據由父到子的順序被逐一加載。