long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}
if(l1 == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里吗,怎么也相等了?请指教.
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}
if(l1 == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里吗,怎么也相等了?请指教.
不好意思,笔误
long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}if(l == l2){
System.out.println("ok2");
}
long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
} if(l == l2){
System.out.println("ok2");
}
if(l1 == l2){
System.out.println("ok3");
}输出ok1
ok2
if(l == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里……
因为l是一个基本类型,当l和l2这个对象在一起比较时,l2会自动解箱,即l会和l2所指向的值做比较