![](/img/trans.png)
[英]Is there any difference between Long a = Long.valueOf(1) or Long a = 1L?
[英]why Double.valueof can handle "1D" while Long.valueof cannot handle "1L"?
public class Test {
public static void main(String[] args) {
System.out.println(Double.valueOf("1D"));
System.out.println(Double.valueOf("1.1d"));
System.out.println(Long.valueOf("1L"));
System.out.println(Long.valueOf("11l"));
}
}
1.0
1.1
Exception in thread "main" java.lang.NumberFormatException: For input string: "1L"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.valueOf(Long.java:803)
at Test.main(Test.java:9)
為什么 Double.valueof 可以處理“1D”而 Long.valueof 不能處理“1L”?
那么,對於這種不一致,這是一個糟糕的設計嗎?
“為什么?” 方便。
Long
值很容易定義,即所有數字都帶有可選符號,所以他們就是這樣定義的。
Double
值很復雜,因此他們決定盡可能重用Java 語言對浮點文字的定義( JLS 3.10.2 ) ,並添加了必要的內容,即符號和特殊值( NaN
和Infinity
)。
當然,這也有不必要的后綴,但那又如何,它不會受到傷害,如果存在它只會被忽略,無論如何它真的從來沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.