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

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神指導這神馬回事呀。。。

public static void main(String[] args) {
???? //short類型變量,內存中2個字節
???? short s = 1;
???? /*
?????? 出現編譯失敗
?????? s和1做運算的時候,1是int類型,s會被提升為int類型
?????? s+1后的結果是int類型,將結果在賦值會short類型時發生錯誤
?????? short內存2個字節,int類型4個字節
?????? 必須將int強制轉成short才能完成賦值
???? */
???? s = s + 1;//編譯失敗
???? s = (short)(s+1);//編譯成功
}


大神,這道題中:s=s+1 里面的1 怎么是int的型的呢??

short 占2個字節,難道1 不止兩個字節有4個字節?那short是短整型還能存啥嘛。。。

正在回答

5 回答

首先,整數值默認 就是int類型,除此之外還有兩種特殊情況:
1.如果直接將較小的整數值(在byte或short類型的表數范圍內)賦給一個byte或short變量,系統會自動把這個整數值當成byte或short類型來處理
2.如果使用一個巨大的整數值(超出了int類型的表數范圍)時,Java不會自動把這個整數值當成long類型來處理,如果希望系統把這個整數值當成long類型來處理,應在這個整數值后增加英文字母l或者L作為后綴。

再分析題主的問題:

short s =1;這時的s是short類型。

s+1時,(s+1)自動轉換為int類型,

所以s=s+1編譯報錯,int類型不能自動轉換為short。


3 回復 有任何疑惑可以回復我~
#1

180416

這個答案看不懂,表數范圍是整數范圍嗎,1是在short和byte范圍里面的,那為什么它就不行。
2019-01-10 回復 有任何疑惑可以回復我~

1被默認為int類型,兩個short型和int不能直接加

0 回復 有任何疑惑可以回復我~
#1

慕數據4870589

兩個類型不能直接加
2018-12-04 回復 有任何疑惑可以回復我~

默認的

0 回復 有任何疑惑可以回復我~

這是默認的;

小于32位的變量都按int結果計算;

強制轉換會損失精度;

short不常用,建議用int

0 回復 有任何疑惑可以回復我~

不知道


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第一季(IDEA工具)升級版
  • 參與學習       1167563    人
  • 解答問題       18748    個

0基礎萌新入門第一課,從Java環境搭建、工具使用、基礎語法開始

進入課程

求大神指導這神馬回事呀。。。

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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