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)。

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,他的博客一直是跟蹤這些建議的簡便方法。

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.
添加回答
舉報