爲什麼在Long l = 3
而不是Long l = 3L
中存在編譯錯誤?將int文字分配給java中的長包裝類
原始數據類型long
接受3
和3l
。我明白3
是一個int
文字 - 但它不能被分配給一個Long
包裝對象? int
只有32位不應該適合64位整數類型?
爲什麼在Long l = 3
而不是Long l = 3L
中存在編譯錯誤?將int文字分配給java中的長包裝類
原始數據類型long
接受3
和3l
。我明白3
是一個int
文字 - 但它不能被分配給一個Long
包裝對象? int
只有32位不應該適合64位整數類型?
因爲沒有一個int
到Long
加寬和自動裝箱轉換,自動裝箱將從long
到Long
(但第一值必須是加寬從int
到long
)。你可以做3L
你有,或
Long l = Long.valueOf(3);
或
Long l = (long) 3;
有關其他答案:
3L
是等於(long)3
- >其解析到3L,因爲它是一個長期的文字
3是整數文字
3L是一個長期的字面
概括地說,他們是彼此不同的,這就是爲什麼你需要解析INT長,反之亦然。
好的,但你能好心解釋我爲什麼原始數據類型長期接受3? – ashley
@ashley [JLS-5.1.2。擴展原始轉換](https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.2)列舉** 19 **擴展轉換,其中包括「int長,浮,或雙「 –
謝謝你將參考文檔 – ashley