1. 程式人生 > >java中宣告常量為什麼要用static修飾

java中宣告常量為什麼要用static修飾

今天定義一個類常量,想著也只有這個類可以用到,就沒用static關鍵字修飾。結果sonar程式碼檢查提示:

Rename this field "PERSON_TYPE_USER" to match the regular expression '^[a-z][a-zA-Z0-9]*$'。我一想我這是正確的命名規範啊,於是百度一搜這提示,發現前面加個static關鍵字修飾就可以了。

那麼問題來了,我就當前類要使用,不需要設定成全域性常量也可以,用static修飾常量有什麼好處?

好處就是:在建立類的多個物件時,用static修飾的常量在記憶體中只有一份拷貝。不用static修飾則可能有多份拷貝。

class A {

    public static final String CONSTANT_A = "Hello";  
	
    public final String CONSTANT_B = "Hello"; 
	
}

建立A的多個物件時,CONSTANT_A在記憶體中只有1份拷貝,CONSTANT_B在記憶體中有多份拷貝。