導航:首頁 > 編程語言 > java放常量的類

java放常量的類

發布時間:2025-06-01 03:40:07

『壹』 java常量池是什麼有什麼用 和堆、棧有關系求簡單易懂的解釋!

1.寄存器:最快的存儲區, 由編譯器根據需求進行分配,我們在程序中無法控制.
2. 棧:存放基本類型的變數數據和對象的引用,但對象本身不存放在棧中,而是存放在堆(new 出來的對象)或者常量池中(字元串常量對象存放在常量池中。)
3. 堆:存放所有new出來的對象。
4. 靜態域:存放靜態成員(static定義的)
5. 常量池:存放字元串常量和基本類型常量(public static final)。
6. 非RAM存儲:硬碟等永久存儲空間
這里我們主要關心棧,堆和常量池,對於棧和常量池中的對象可以共享,對於堆中的對象不可以共享。棧中的數據大小和生命周期是可以確定的,當沒有引用指向數據時,這個數據就會消失。堆中的對象的由垃圾回收器負責回收,因此大小和生命周期不需要確定,具有很大的靈活性。
對於字元串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的就存儲在堆中。對於equals相等的字元串,在常量池中永遠只有一份,在堆中有多份。

『貳』 項目中的常量是放在介面里還是放在類里呢

《Java與模式》 ,裡面提了一句不建議使用常量介面,甚至舉了個java源碼的反例。

1、常量類應該是final,不變的,而介面里的參數是final,也是不變的。

那麼,看起來介面是放常量沒有一定問題,還省去了final的輸入,非常的合適。

但是,類是只能單繼承的,介面是允許多實現的。

要是類實現的多個介面出現重名的常量,會報錯,必須要在實現類明確常量用的是哪個介面的。

雖然這可以說是架構師設計的問題,但是,架構師這么做就違反了依賴倒轉原則,這玩意就不細說了。

2、如果某個實現了常量介面的類被修改不再需要常量了,也會因為序列化兼容原因不得不保持該實現,而且非final類實現常量介面會導致所有子類被污染。

這個應該很少人遇到過,不過這是 Effective Java 裡面說的。

具體的理解就是,能被序列化的一定是數據,

那麼突然改了數據結構,可能導致老版的數據無法被反序列化,而新版的數據會有冗雜的數據,

要是折騰個幾次,網路傳輸協議 這個無法通過時間或者空間提升的玩意就能逼死你了。

3、基於數據只暴露給相應的類的原則,一個類實現一個常量介面,可能只需要其中幾個常量,而得到了更多無用的常量,

所以,使用常量介面的時候都是

1.介面是定義類型的,而不應該用於導出常量。常量介面不建議使用,應使用常量類。

2.訪問:介面. 常量 , 因為在介面定義 常量 默認是 static 的。

大佬的分析: http://www.360doc.com/content/14/1210/17/16650130_431828218.shtml

閱讀全文

與java放常量的類相關的資料

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接