簡體   English   中英

整數可以加長嗎?

[英]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中,有幾種原始數據類型。 intlong變量是其中兩個。 這兩種數據類型用於存儲整數值。 不同之處在於變量的大小,

int :32位

long :64位

您可以將int和long一起添加,當jvm將這兩個變量相加時,結果將生成為long值。 因此您必須使用一個長變量來存儲答案。 這是由於java的自動類型轉換。

如果要獲取int值作為答案,則必須cast long值intint

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM