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

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

Java的L號(長號)規范

Java的L號(長號)規范

看來,當您使用Java輸入數字時,編譯器會自動將其讀取為整數,這就是為什么當您輸入(long)6000000000(不在整數范圍內)時會抱怨6000000000不是整數。要更正此問題,我必須指定6000000000L。我剛剛了解了此規范。還有其他數字規范,例如short,byte,float,double嗎?似乎這些內容會很好,因為(我假設)如果您可以指定要輸入的數字是短數字,則Java不必強制轉換它-這是一個假設,如果我輸入錯誤,請更正我。我通常會自己搜索這個問題,但是我什至不知道這種數字規范叫什么。
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

對于long(例如39832L),float(例如2.4f)和double(例如-7.832d)有特定的后綴。


如果沒有后綴,并且是整數類型(例如5623),則假定為int。如果它不是整數類型(例如3.14159),則假定為double。


在其他情況下(byte,short,char),你需要投,因為沒有具體的后綴。


Java規范允許上部和下部殼體的后綴,但是上殼體版本為longs的優選的,因為上殼體L不太容易混淆以數字1比下殼體l。


詳細信息請參見JLS第3.10節(請參閱的定義IntegerTypeSuffix)。


查看完整回答
反對 回復 2019-11-27
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我希望你不會介意輕微的切線,但認為你可能有興趣知道,除了F(浮法), D(雙),和L(長),一個已經提出添加后綴byte和short- Y和S分別。對于字節(或短)數組使用文字語法時,這將消除對轉換為字節的需要。引用提案中的示例:


主要好處:如果采納該建議,為什么平臺會更好?


像這樣的代碼


 byte[] stuff = { 0x00, 0x7F, (byte)0x80,  (byte)0xFF};

可以重新編碼為


 byte[] ufum7 = { 0x00y, 0x7Fy, 0x80y, 0xFFy };

Joe Darcy正在監督Java 7的Project Coin,他的博客一直是跟蹤這些建議的簡便方法。


查看完整回答
反對 回復 2019-11-27
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

默認情況下,java編譯器會將任何整數原始數據類型(字節,短型,整型,長型)視為整型。對于byte和short,只要為其分配的值在其范圍內,就沒有問題,也不需要后綴。如果分配給byte和short的值超出其范圍,則需要顯式類型轉換。


例如:


byte b = 130; // CE: range is exceeding.

克服這種執行類型轉換。


byte b = (byte)130; //valid, but chances of losing data is there.

在長數據類型的情況下,它可以毫不費力地接受整數值。假設我們分配像


Long l = 2147483647; //which is max value of int

在這種情況下,不需要像L / l這樣的后綴。默認情況下,java編譯器認為int類型的值為2147483647。內部類型轉換由編譯器完成,并且int自動提升為Long類型。


Long l = 2147483648; //CE: value is treated as int but out of range 

在這里,我們需要將后綴設為L,以將文字2147483648視為java編譯器的long類型。


所以最后


Long l = 2147483648L;// works fine.


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 734 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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