为什么不显示"好"这个词?

0 java arrays

当我运行此代码时,为什么不显示"好"这个词?存储在Array1和Array2的位置0的值对于两者都是1.

public class ArrayStuff {

    public static void main(String[] args) {

        double value = 1;

        Double[] Array1 = new Double[10];
        Array1 = new Double[] {1.0};

        Double[] Array2 = new Double[10];

        Array2[0] = value;

        int i = 0;

        System.out.println(Array1[0]);
        System.out.println(Array2[i]);

        if (Array1[0] == Array2[i])
        {

            System.out.println("good");

        }
     }

}
Run Code Online (Sandbox Code Playgroud)

Eri*_*low 5

在Java中,当一个人问

Double d1 = ...;
Double d2 = ...;
if (d1 == d2) {
    System.out.println("Equal");
} else {
    System.out.println("Not Equal");
}
Run Code Online (Sandbox Code Playgroud)

JRE不会对Double对象进行取消装箱,因此会检查两者是否Double是完全相同的对象.在这里,他们不是.注意这两个代码块之间的区别:

Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
if (i1 == i2) {
    System.out.println("Equal");
} else {
    System.out.println("Not Equal");
}
Run Code Online (Sandbox Code Playgroud)

Integer i1 = Integer.valueOf(1);
Integer i2 = Integer.valueOf(1);
if (i1 == i2) {
    System.out.println("Equal");
} else {
    System.out.println("Not Equal");
}
Run Code Online (Sandbox Code Playgroud)

第二个版本重用该Integer对象,因此第一个版本打印Not Equal,第二个版本打印Equal.