2 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
沒(méi)有什么。
Long b = 0L;
將進(jìn)行自動(dòng)裝箱。編譯器將其替換為:
Long b = Long.valueOf(0L);
如果你反編譯你的類(lèi),你可以看到這一點(diǎn),例如使用javap.
void a() {
Long a = Long.valueOf(0);
}
void b() {
Long b = 0L;
}
反編譯為:
void a();
Code:
0: lconst_0
1: invokestatic #2 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
4: astore_1
5: return
void b();
Code:
0: lconst_0
1: invokestatic #2 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
4: astore_1
5: return
那么在考慮內(nèi)存消耗和時(shí)間復(fù)雜度的情況下,如何更好地初始化一個(gè)變量呢?
因?yàn)樗鼈冊(cè)谡Z(yǔ)義上是相同的,所以?xún)?nèi)存消耗和時(shí)間復(fù)雜度也相同。
相反,專(zhuān)注于真正重要的東西,即可讀性:使用你(和其他人)一目了然會(huì)發(fā)現(xiàn)最容易理解的。

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
正如其他人指出的那樣,Long l = Long.valueOf(0)
將Long l = 0L
編譯為相同的字節(jié)碼,唯一的區(qū)別是風(fēng)格和可讀性。
此外..
為這樣的事情擔(dān)心時(shí)間復(fù)雜度有點(diǎn)傻:兩個(gè)表達(dá)式都是常數(shù)時(shí)間。在處理數(shù)據(jù)集合而不僅僅是單個(gè)數(shù)據(jù)時(shí),您通常只談?wù)摃r(shí)間復(fù)雜度。
至于內(nèi)存消耗,他們沒(méi)有像你說(shuō)的那樣使用64位;long
它是通常使用 64 位的原始類(lèi)型,但Long
(包裝類(lèi)型)使用比原始類(lèi)型更多的內(nèi)存,因?yàn)樗枰搩?nèi)存用于與對(duì)象相關(guān)的內(nèi)容。
添加回答
舉報(bào)