為什么兩個(gè)byte類型的變量相加會(huì)報(bào)錯(cuò)?

1.先看以下代碼

public classMain {

? ? ?public static void main(String[] args) {

? ? ?byte a =4;

? ? ?byte b =6;

? ? ?byte c = a + b;

}

}

以上代碼在編譯過(guò)程中就會(huì)報(bào)錯(cuò)。

2.分析:

為什么byte a = 4;就不會(huì)報(bào)錯(cuò)?

因?yàn)閎yte是一個(gè)字節(jié),八個(gè)二進(jìn)制位,此時(shí)其范圍為-128 ~ +127,所以4在其范圍內(nèi),所以可以被賦值。一旦這個(gè)數(shù)值超過(guò)了127,那么編譯就會(huì)報(bào)錯(cuò)了。

為什么byte c = a + b;就報(bào)錯(cuò)呢?

這是java的機(jī)制導(dǎo)致的,java在對(duì)byte這種類型進(jìn)行“運(yùn)算”時(shí),會(huì)將其轉(zhuǎn)換為int類型,兩個(gè)int類型相加,賦值給byte類型肯定會(huì)報(bào)錯(cuò)的。

為什么byte = 3 + 4;又不會(huì)報(bào)錯(cuò)呢?

跟第一個(gè)一樣,3+4是常量的計(jì)算,會(huì)優(yōu)先執(zhí)行,執(zhí)行結(jié)果再賦值給byte,此時(shí)判斷數(shù)值是否滿足該類型范圍,滿足就直接賦值了。

3.總結(jié)

兩個(gè)變量相加,先對(duì)類型進(jìn)行提升,然后運(yùn)算,再將運(yùn)算結(jié)果賦值。

兩個(gè)常量相加,先計(jì)算常量數(shù)值,然后判斷是否滿足類型范圍,再賦值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對(duì)java的編譯器有特殊的意義,他們用來(lái)表示一種數(shù)據(jù)類型,或...
    哈哈哎呦喂閱讀 771評(píng)論 0 0
  • 常量的概述和使用 A:什么是常量在程序執(zhí)行的過(guò)程中其值不可以發(fā)生改變 B:Java中常量的分類字面值常量自定義常量...
    野望君閱讀 670評(píng)論 0 0
  • Win7下如何打開(kāi)DOS控制臺(tái)? a:開(kāi)始--所有程序--附件--命令提示符 b:開(kāi)始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,698評(píng)論 4 12
  • 今天陪寶寶閱讀《天空小熊第一次探險(xiǎn)》之第7~12頁(yè),提問(wèn)作答? 提:為什么天空會(huì)摔跤呢? 答:因?yàn)樘炜仗d奮了,腳...
    ZZ小陳閱讀 278評(píng)論 0 1
  • 我想你也遇到過(guò)這樣的事兒。“這件事兒,應(yīng)該這樣這樣···如果不這樣會(huì)怎樣怎樣!”。給出建議的人總會(huì)覺(jué)得自己的意見(jiàn)很...
    將軍_84fd閱讀 921評(píng)論 0 0

友情鏈接更多精彩內(nèi)容