導航:首頁 > 編程語言 > 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放常量的類相關的資料

熱點內容
有哪些著名的講唐詩的網路小說 瀏覽:145
通過wifi傳文件到手機 瀏覽:829
手機照片文件有多少m 瀏覽:534
醫院看病網上預約app 瀏覽:975
蘋果6s不通知qq消息 瀏覽:728
word文檔怎麼另存為jpg格式文件 瀏覽:225
北京專業定製網站多少錢 瀏覽:209
什麼是app流量 瀏覽:652
找傢具哪個網站靠譜 瀏覽:552
win10文件添加白名單 瀏覽:599
golang導出word文件 瀏覽:524
建行客戶微信群 瀏覽:984
如何將電腦映射到網路 瀏覽:27
買飾品去哪個網站好 瀏覽:380
文本文件格式有哪些rm 瀏覽:201
騰訊會議app是一個什麼平台 瀏覽:310
手機迅雷測網速無網路 瀏覽:321
網路機頂盒怎麼看4k片 瀏覽:28
文件與程序關聯win10 瀏覽:478
什麼app可以查看買的基金 瀏覽:486

友情鏈接