这里他们是同一个实例:
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2); // outputs "true"
Run Code Online (Sandbox Code Playgroud)
但在这里他们是不同的实例:
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2); // outputs "false"
Run Code Online (Sandbox Code Playgroud)
为什么包装器对象仅在值127内共享同一实例?
可能重复:
关于自动装箱和对象相等/身份的Java问题
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = 210;
Integer i4 = 210;
if(i1 ==i2){
System.out.println("True");
}else{
System.out.println("False");
}
if(i3==i4){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(10) ==Integer.valueOf(10)){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(210) ==Integer.valueOf(210)){
System.out.println("True");
}else{
System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)
答案是
真正
假
真正
假
为什么它给2和4条件假?
Integer a = 127;
Integer b = 127;
System.out.println(a == b);
Run Code Online (Sandbox Code Playgroud)
结果是真的,但是:
Integer a = 128;
Integer b = 128;
System.out.println(a == b);
Run Code Online (Sandbox Code Playgroud)
结果是错误的.为什么?