java中何時該用static修飾方法?有什麼好處或者壞處?

當一個方法或者變量須要初始化加載,或者是常常被調用的時候能夠加上static。
用static修飾的方法能夠用類名直接調用,不用的必定要先實例化一個對象而後才能夠調用
好比 person這個類裏面有一個方法public static add(){}
那麼能夠直接用person類調用 person.add();固然也能夠用下面的方法先出一個對象在調用也是能夠
若是這個方法前面沒有static 好比 public add(){}
那麼先要person p=new person();
而後用p.add();
類加載器在加載這個類的時候就已經實例化了這個類。
壞處:初始化加載,比較佔內存,因此不常常用的方法,不建議加此關鍵字。

若是static是寫在單例中,高併發訪問是會出問題的,這時候就要設置線程等待了,static是在容器加載的時候就已經加載到內存中,因此static方法和變量不宜過分使用,有選擇的使用。

若是你須要經過計算來初始化你的static變量,你能夠聲明一個static塊,Static 塊僅在該類被加載時執行一次。下面的例子顯示的類有一個static方法,一些static變量,以及一個static 初始化塊:// Demonstrate static variables,methods,and blocks.class UseStatic {static int a = 3;static int b;static void meth(int x) {System.out.println("x = " + x);System.out.println("a = " + a);System.out.println("b = " + b);}static {System.out.println("Static block initialized.");b = a * 4;}public static void main(String args[]) {meth(42);}}一旦UseStatic 類被裝載,全部的static語句被運行。首先,類屬性變量開始賦值,a被設置爲3,b默認初始化爲 0 ,接着運行static 塊,執行(打印一條消息),最後,b被初始化爲a*4 或12。而後調用main(),main() 調用meth() ,把值42傳遞給x。3個println () 語句引用兩個static變量a和b,以及局部變量x。注意:在一個static 方法中引用任何實例變量都是非法的。下面是該程序的輸出:Static block initialized.x = 42a = 3b = 12
相關文章
相關標籤/搜索