当我运行此代码时,为什么不显示"好"这个词?存储在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)
在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.