[英]Can an integer be added with a long?
對於這個such腳的問題,我感到抱歉。 我自己測試一下...但是不幸的是,我不知道如何為Java編寫代碼,僅就這個問題就不值得回答了。
是否可以將long和一個整數相加? 我的朋友正在從事一個項目,我認為他可以通過使用long而不是整數來解決他的一個錯誤。 (他希望數字能超過21.47億)。
我嘗試自己進行一些研究,但令我驚訝的是,答案並不那么容易找到。 這是我能夠找到的信息來源之一。
“如果兩個整數類型中的一個或兩個都為long,則結果為long。” https://community.oracle.com/message/5270213
那是對的嗎? 再一次,對不起我無法自己進行測試。
是的,您可以添加long
和一個int
就可以了,最后得到long
。
如Java語言規范(特別是JLS8, §5.1.2
所述,對int
進行了擴展的原語轉換。
JLS8 §5.6.2
是重要的部分,詳細描述了這里發生的事情(我的粗體顯示):
擴展原語轉換(第5.1.2節)適用於轉換以下規則指定的一個或兩個操作數:
如果一個操作數的類型為double,則另一個將轉換為double。
否則,如果其中一個操作數的類型為float,則另一個將轉換為float。
否則,如果其中一個操作數的類型為long,則另一個將轉換為long。
否則,兩個操作數都將轉換為int類型。
是的,您可以將long和一個整數加在一起。 在Java中,有幾種原始數據類型。 int
和long
變量是其中兩個。 這兩種數據類型用於存儲整數值。 不同之處在於變量的大小,
int
:32位
long
:64位
您可以將int和long一起添加,當jvm將這兩個變量相加時,結果將生成為long值。 因此您必須使用一個長變量來存儲答案。 這是由於java的自動類型轉換。
如果要獲取int
值作為答案,則必須cast
long值int
為int
,
int x=5; //int value
long y = 10; //long value
long z = x + y; //result is a long value(normally jvm does)
int i=(int) (x+y); // result is cast into a int value.
z和我都得到值:15
您總是可以簡單地嘗試這些事情。 例如使用jdoodle
如您所見,這完全有可能。 建議使用long
來存儲結果,但這不是必需的。 在后一種情況下,如果發生溢出,Java將僅使用32個最低有效位,因此:
6666555555555544444444443333333333222222222211111111110000000000 (index)
3210987654321098765432109876543210987654321098765432109876543210
----------------------------------------------------------------
0101010101010010000011110010101111101010101111101011101011011101 (value)
將存儲為:
33222222222211111111110000000000 (index)
10987654321098765432109876543210
--------------------------------
11101010101111101011101011011101 (value)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.