我想出了一個Java測試以下問題:與運算符==比較,它是如何工作的?
import java.awt.Button;
class CompareReference
{
public static void main(String [] args)
{
float f = 42.0f;
float [] f1 = new float[2];
float [] f2 = new float[2];
float [] f3 = f1;
long x = 42;
f1[0] = 42.0f;
}
}
這三種說法是正確的?
f1 == f2
f1 == f3
f2 == f1[1]
x == f1[0]
f == f1[0]
我需要選擇只有3語句。
那麼,1
顯然是錯誤的,因爲我們正在比較兩個不同的引用,2
顯然是真的,因爲引用是相同的。但我不知道原始人。我感到困惑的是,如果我們比較Integer
s在-128到127的範圍內,他們就是緩存。相關topic。有什麼關於原始的,一些狹隘的情況?
我一直在尋找它是如何工作的JLS 8
,但沒有發現任何有用的東西。
這是當它autobox,沒有自動裝箱這裏,它只是普通的原始值作儀, –
確實如此。你也可以運行一個輸出上述真/假值的程序。 – Joeblade
第三個表達式甚至沒有編譯。 –