亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中的提升和轉換

java中的提升和轉換

FFIVE 2023-07-19 16:31:57
提升意味著將較小的類型文字提升或轉換為較高的類型。此提升用于評估表達式。現在我對此有疑問。當我輸入這個語句時byte var1 = 56 + 10;給出答案 66。這怎么可能?根據提升規則,每個 byte、short 和 char 都會提升為 int。所以這個 56 和 10 將被提升為 int,因此答案 66 將是 int。然后這個 66 將被存儲在字節類型的變量中。然而,要將某些內容從 int 存儲到 byte,則需要進行強制轉換。但這段代碼無需強制轉換即可完美運行。
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

與許多情況一樣,這可以在Java 語言規范 § 5.2中找到:

此外,如果表達式是、、或 類型的常量表達式(第 15.28 節):byteshortcharint

  • 如果變量的類型為 、 或 ,并且常量表達式的值可以用變量的類型表示,則可以使用縮小基byteshort轉換char

這意味著編譯器首先擴大到int目標類型,然后縮小到目標類型,因為 66 確實可以在目標類型(即字節)中表示。


請注意,這僅適用于常量表達式。例如,以下代碼會產生編譯時錯誤:

static int get() {

? ? return 10;

}


public static final main(String[] args) {

? ? byte var1 = 56 + get();

}


查看完整回答
反對 回復 2023-07-19
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

這沒關系,因為你提供的是恒定的價值。

常量的編譯時縮小意味著諸如以下的代碼:

字節答案 = 42;

被允許。如果沒有縮小范圍,整數文字 42 具有 int 類型這一事實意味著需要強制轉換為 byte:

字節答案 = (字節) 42;?// 允許強制轉換,但不是必需的


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號