枚舉和常量類哪個(gè)好 java的枚舉會(huì)比常量更耗內(nèi)存嗎?
java的枚舉會(huì)比常量更耗內(nèi)存嗎?從內(nèi)存上來說,如果常量不單獨(dú)放在一個(gè)Constance類中,是要比枚舉少一個(gè)指針。內(nèi)存少4個(gè)字節(jié)。生命周期跟具體使用方式有關(guān),一般情況下如果常量聲明為static ,
java的枚舉會(huì)比常量更耗內(nèi)存嗎?
從內(nèi)存上來說,如果常量不單獨(dú)放在一個(gè)Constance類中,是要比枚舉少一個(gè)指針。內(nèi)存少4個(gè)字節(jié)。
生命周期跟具體使用方式有關(guān),一般情況下如果常量聲明為static ,那么生命周期跟枚舉是一致的。
把string當(dāng)enum用,有性能損失嗎?
有。
以c語言為例,在內(nèi)存中創(chuàng)建一個(gè)字符串至少需要一個(gè)char數(shù)組來存儲(chǔ),因?yàn)橐鎯?chǔ)結(jié)束標(biāo)識(shí)符;而枚舉實(shí)際則是一個(gè)結(jié)構(gòu),其內(nèi)的枚舉項(xiàng)可以定義為整型,要比字符串的存儲(chǔ)方便,也開銷少。
而且把字符串當(dāng)做枚舉來用,字符串也容易寫錯(cuò),而枚舉都定義成數(shù)字常量,編譯器編譯時(shí)容易發(fā)現(xiàn)錯(cuò)誤,提示開發(fā)者及時(shí)改正,便于維護(hù)。