程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 類-int i = 1;Integer b = new Integer(1); i==b 為true

類-int i = 1;Integer b = new Integer(1); i==b 為true

編輯:編程綜合問答
int i = 1;Integer b = new Integer(1); i==b 為true

基本數據類型存放在棧中,引用也存放在棧中,所以1,i,b應該都在棧中,而b的實例對象在堆中。是否堆中存放實例對象的地址,而實例對象的值任然是棧中的那個1呢?

最佳回答:


有個東西叫做自動拆箱!!
你運行這段程序後看看它的字節碼就了解是怎麼回事了!!

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: return

public 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
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved