class D {
public static void main(String args[]) {
Integer b2=128;
Integer b3=128;
System.out.println(b2==b3);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
false
Run Code Online (Sandbox Code Playgroud)
class D {
public static void main(String args[]) {
Integer b2=127;
Integer b3=127;
System.out.println(b2==b3);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
true
Run Code Online (Sandbox Code Playgroud)
注意:-128到127之间的数字为真.
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);//true
integer1 = 128;
integer2 = 128;
System.out.println(integer1 == integer2);//false
Run Code Online (Sandbox Code Playgroud)
我发现它返回==(如果是)在范围之内-128 - 127,为什么会有这样的规范?
main(){
Integer i1 = 500;
Integer i2 = 500;
System.out.println(i1 == i2); // O/P is "**false**"
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2); // O/P is "**true**"
} // End of main.
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么输出不同.据我所知s1,s2将指向堆上的同一个对象.所以他们的参考地址是一样的.同样地,我认为整数也是一样的.但事实并非如此.它为什么不同?