public class Wrap
{
public static void main(String args[])
{
Integer a =1000;
Integer b =1000;
System.out.println(a == b); //line 7
Integer c = 10;
Integer d = 10;
System.out.println(c == d); // line 10
}
}
明白了部分:在第7行是比較參考變量是否指相同的對象或沒有。並且在第10行中比較包裝對象所保持的實際基本數據。包裝自動裝箱
我發現了什麼:如果值是-128到127之間就比較原始值,否則檢查的參考變量是否指的是同一個對象
我的問題:爲什麼會這樣呢?有沒有涉及邏輯?這是任何用途的邏輯?或者是 它只是一種oracle的方式來說明java是如何與其他語言不同的。
1000可能不會這樣做。嘗試'-XX:+ AggressiveOpts' –
由於某種奇怪的原因,存在一些緩存,這就是爲什麼該比較適用於該範圍的原因。 – arynaq