[英]Why does `System.out.println(null);` give “The method println(char[]) is ambiguous for the type PrintStream error”?
[英]Why does System.out.println('a' == 97.0) give true
我知道 '==' 運算符檢查它們是否存在於 Java 中的同一內存位置,但是為什么,當我比較char
和double
數據類型時,Java 給了我true
? 它們不是不同的數據類型嗎? 以及為什么它沒有給我一個編譯時錯誤,因為根據文檔:
如果我們將 == 應用於對象類型,那么參數類型之間應該存在兼容性(子到父或父到子或相同類型)。 否則,我們將得到一個編譯時錯誤。
在 Java 中, char
和double
是原語,它們使用==
按值進行比較,而不是按內存位置進行比較,這僅適用於對象(引用類型)。
當您執行'a' == 97.0
時,它是char
和double
之間的比較。 char
是一個無符號整數,與double
相比, char
經歷了擴大到double
的轉換。 字符'a'
對應於數值 97,所以當轉換為double
時,它是 97.0。 並且給定97.0 == 97.0
為真,這就是表達式的結果。
另請參閱 Java 語言規范:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.