第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

編譯時(shí)常量和變量

編譯時(shí)常量和變量

白板的微信 2019-12-21 11:23:08
Java語(yǔ)言文檔說(shuō):如果將原始類(lèi)型或字符串定義為常量,并且在編譯時(shí)知道該值,則編譯器會(huì)使用其值替換代碼中各處的常量名稱(chēng)。這稱(chēng)為編譯時(shí)常量。我的理解是,如果我們有一段代碼:private final int x = 10;然后,編譯器會(huì)將x代碼中每次出現(xiàn)的內(nèi)容替換為literal 10。但假設(shè)常量在運(yùn)行時(shí)初始化:private final int x = getX(); // here getX() returns an integer value at run-time.與編譯時(shí)常數(shù)相比,性能是否會(huì)下降(無(wú)論可以忽略不計(jì))?另一個(gè)問(wèn)題是下面的代碼行:private int y = 10; // here y is not final被編譯器以與編譯時(shí)常量相同的方式處理?最后,我從答案中了解到的是:final static 表示編譯時(shí)常數(shù)只是final意味著它是一個(gè)常量,但是在運(yùn)行時(shí)初始化只是static意味著在運(yùn)行時(shí)初始化沒(méi)有final是變量,不會(huì)被視為常量。我的理解正確嗎?
查看完整描述

3 回答

?
交互式愛(ài)情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

編譯時(shí)間常數(shù)必須為:

  • 宣布最終

  • 原始或字符串

  • 在聲明中初始化

  • 用常量表達(dá)式初始化

所以private final int x = getX();不是恒定的。

第二個(gè)問(wèn)題private int y = 10;不是恒定的(在這種情況下是非最終的),因此優(yōu)化器無(wú)法確定該值將來(lái)不會(huì)更改。因此,它無(wú)法將其優(yōu)化為恒定值。答案是:不,它與編譯時(shí)間常數(shù)的處理方式不同。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

該JLS使得之間的區(qū)別如下final變量和常量:


final 變數(shù)

可以聲明一個(gè)變量final。甲final變量可以僅被分配給一次。如果將final變量賦值給它,則是編譯時(shí)錯(cuò)誤,除非在賦值之前絕對(duì)未賦值(第16節(jié)(確定賦值))。


一旦一個(gè)final變量被分配,它總是包含相同的值。如果final變量持有對(duì)對(duì)象的引用,則可以通過(guò)對(duì)對(duì)象的操作來(lái)更改對(duì)象的狀態(tài),但是變量將始終引用同一對(duì)象。這也適用于數(shù)組,因?yàn)閿?shù)組是對(duì)象。如果final變量持有對(duì)數(shù)組的引用,則可以通過(guò)對(duì)數(shù)組的操作來(lái)更改數(shù)組的組件,但是變量將始終引用同一數(shù)組。


一個(gè)空白的final是一個(gè)final變量,其聲明中缺少一個(gè)初始化。


常數(shù)

甲常量變量是final原始類(lèi)型或類(lèi)型的變量 String,其與一個(gè)常量表達(dá)式(初始化§15.28)。


從這個(gè)定義中,我們可以看出一個(gè)常數(shù)必須是:


宣告 final

原始類(lèi)型或類(lèi)型 String

在其聲明中初始化(不是空白final)

用常量表達(dá)式初始化

編譯時(shí)常量呢?

該JLS不包含短語(yǔ)編譯時(shí)間常數(shù)。但是,程序員經(jīng)常將術(shù)語(yǔ)“ 編譯時(shí)常量”和“ 常量常量”互換使用。


如果final變量不滿足上述標(biāo)準(zhǔn),則該final變量在技術(shù)上應(yīng)稱(chēng)為變量。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

根據(jù)JLS,沒(méi)有要求“常量”應(yīng)該是靜態(tài)的。


因此,“常量”可以是靜態(tài)的也可以是非靜態(tài)的(實(shí)例變量)。


但是JLS對(duì)變量成為“常量變量”(除了只是最終變量)施加了一些其他要求:


僅是字符串或原始

僅初始化為內(nèi)聯(lián),因?yàn)樗亲罱K的,并且不允許空白的最終

用“常量表達(dá)式” =“編譯時(shí)常量表達(dá)式”初始化(請(qǐng)參見(jiàn)下面的JLS引用)

4.12.4。最終變量(JLS)


甲常量變量是原語(yǔ)類(lèi)型的最終變量或輸入與一個(gè)常量表達(dá)式初始化字符串(§15.28) 。


15.28。常數(shù)表達(dá)式


甲編譯時(shí)間常量表達(dá)式是表示原始類(lèi)型或String不突然完成,并且僅使用以下組成的一個(gè)值的表達(dá)式:


基本類(lèi)型的文字和字符串類(lèi)型的文字(§3.10.1,§3.10.2,§3.10.3,§3.10.4,§3.10.5)


強(qiáng)制轉(zhuǎn)換為基本類(lèi)型,強(qiáng)制轉(zhuǎn)換為字符串(第15.16節(jié))


一元運(yùn)算符+,-,?和?。ǖ皇?+或-)(§15.15.3,§15.15.4,§15.15.5,§15.15.6)


乘法運(yùn)算符*,/和%(第15.17節(jié))


加法運(yùn)算符+和-(§15.18)


移位運(yùn)算符<<,>>和>>>(第15.19節(jié))


關(guān)系運(yùn)算符<,<=,>和> =(但不包括instanceof)(第15.20節(jié))


等號(hào)運(yùn)算符==和!=(§15.21)


按位和邏輯運(yùn)算符&,^和| (§15.22)


條件和運(yùn)算符&&和條件或運(yùn)算符|| (§15.23,§15.24)


三元條件運(yùn)算符?:(§15.25)


帶括號(hào)的表達(dá)式(第15.8.5節(jié)),其包含的表達(dá)式是一個(gè)常量表達(dá)式。


引用常量變量(第4.2.4節(jié))的簡(jiǎn)單名稱(chēng)(第6.6.5.6.1節(jié))。


TypeName形式的合格名稱(chēng)(第6.5.6.2節(jié))。引用常量變量的標(biāo)識(shí)符(第4.12.4節(jié))。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 828 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)