1,static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途。(簡而言之)方便在沒有創建對象的情況下來進行調用(方法/變量)。
2,static方法
static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何對象,既然都沒有對象,就談不上this了。
3,static變量
static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。
4,static代碼塊
static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置於類中的任何地方(除了方法內部),類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。靜態塊外部不能直接調用,靜態塊一般用在一些初始化操作。
static容易誤解的地方:
1,Java中的static關鍵字不會影響到變量或者方法的作用域。在Java中能夠影響到訪問權限的只有private、public、protected(包括包訪問權限)這幾個關鍵字。
2,靜態成員變量雖然獨立於對象,但是不代表不可以通過對象去訪問,所有的靜態方法和靜態變量都可以通過對象訪問(只要訪問權限足夠)。
3,Java中切記:static是不允許用來修飾局部變量。(java語法規定的)
構造器是不是靜態的?
不是
1,靜態方法中不能使用this,而構造器中可以使用this關鍵字。this是指調用當前方法的對象,而靜態方法不屬於任何對象。
2,靜態方法是獨立於對象的類級別的方法。不創建實例 構造函數的調用也不需要實例,構造函數是由jvm創建類實例時自動調用
3,構造方法不能繼承,而靜態方法可以繼承