基本数据类型存放在栈中,引用也存放在栈中,所以1,i,b应该都在栈中,而b的实例对象在堆中。是否堆中存放实例对象的地址,而实例对象的值任然是栈中的那个1呢?
5条回答 默认 最新
关注 有个东西叫做自动拆箱!!
你运行这段程序后看看它的字节码就了解是怎么回事了!!E:>javap -c Test
Warning: Binary file Test contains com.JUtils.base.Test
Compiled from "Test.java"
public class com.JUtils.base.Test {
public com.JUtils.base.Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":
()V
4: returnpublic static void main(java.lang.String[]);
Code:
0: iconst_1
1: istore_1
2: new #2 // class java/lang/Integer
5: dup
6: iconst_1
7: invokespecial #3 // Method java/lang/Integer.""
:(I)V
10: astore_2
11: getstatic #4 // Field java/lang/System.out:Ljava/
io/PrintStream;
14: iload_1
15: aload_2
16: invokevirtual #5 // Method java/lang/Integer.intValue ///////重点是这句代码!!!
:()I
19: if_icmpne 26
22: iconst_1
23: goto 27
26: iconst_0
27: invokevirtual #6 // Method java/io/PrintStream.printl
n:(Z)V
30: return
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报