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 = 42
a = 3
b = 12


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM