请你解释下面的行为.
public class EqAndRef {
public static void main(String[] args) {
Integer i = 10;
Integer j = 10;
Double a = 10D;
Double b = 10D;
System.out.println(i.equals(j));
System.out.println(i == j);
System.out.println(a.equals(b));
System.out.println(a == b);
}
}
Run Code Online (Sandbox Code Playgroud)
输出jdk 6
true
true
true
false
Run Code Online (Sandbox Code Playgroud)
为什么a == b是假的而我= = j不是假的?
初始化Integers 然后你会得到@5gon12eder所说的差异
整数 si 和 j 是从 \xe2\x80\x93128 到 127 范围内的整数文字构造的(通过自动装箱),保证由 JVM 池化,因此它们使用相同的对象(请参阅享元模式)。因此,它们通过对象引用进行比较。
\n\n尝试这段代码来初始化你的整数
\n\n Integer i = new Integer(10);\n Integer j = new Integer(10);\nRun Code Online (Sandbox Code Playgroud)\n