一个例子:
System.out.println(Double.valueOf("12.0") == Double.valueOf("12"));//false System.out.println(Double.valueOf("12.0").doubleValue() == Double.valueOf("12").doubleValue());//true System.out.println(Double.valueOf("12.0").doubleValue() == Double.valueOf("12"));//true System.out.println(Double.valueOf("12.0") == 1* Double.valueOf("12"));//true
第一行:判断符两边为两个Double实例,不同的实例内存hashcode不一样,所以false
第二行:判断符的两侧都进行了拆箱,判断两个double型数值,所以true
第三行:判断符的左侧进行了拆箱,所以在比较时右侧自动拆箱,所以true
第四行:判断符的右侧进行了运算,int型的数值与Double型相乘运算,Double会自动拆箱,从而
比较时左侧也自动拆箱,所以true