int 和 Integer 有什麼區別。請簡單的寫一段有關自動拆裝箱的代碼。

//1
	Integer a =10;
	Integer a1=10;
	System.out.println(a==a1);//true
	//2 
	Integer b=128;
	Integer b1 = 128;
	System.out.println(b==b1);//false
	//3
	int c=12;
	int c1=12;
	System.out.println(c==c1);//true
	//4 
	int d=210;
	int d1=210;
	System.out.println(d==d1);//true
	//5 
	Integer e = new Integer(11);
	Integer e1 = new Integer(11);
	System.out.println(e==e1);//false
	//6
	int f = 11;
	System.out.println(f==e);//true

integer與int的區別:
1、Java 中的數據類型分爲基本數據類型和複雜數據類型
int是前者,integer 是後者(也就是一個類)。
2、初始化時,代碼如下:
int i = 1;
Integer i = new Integer(1); // (要把integer 當做一個類看)。
int 是基本數據類型(面向過程留下的痕跡,不過是對Java的有益補充)
Integer 是一個類,是int的擴展,定義了很多的轉換方法

類似的還有:float Float、double Double、string String等 。

舉個例子:當需要往ArrayList,HashMap中放東西時,像int,double這種基本數據類型是放不進去的,因爲容器都是裝object的,這時就需要這些基本數據類型的包裝類了。

int和Integer關係是比較微妙的。關係如下:
1、int是基本的數據類型;
2、Integer是int的封裝類;
3、int和Integer都可以表示某一個數值;
4、int和Integer不能夠互用,因爲他們兩種不同的數據類型;


     在Java裏==是比較內存地址是否相同,即是否爲同一個對象。
     第1、2種情況爲了說明Integer與Integer間的比較,從jdk1.5開始,有“自動裝箱”這麼一個機制,在byte(-128到127)範圍內(整型的八位二進制的表示的範圍爲-128到127),如果存在了一個值,再創建相同值的時候就不會重新創建,而是引用原來那個,但是超過byte範圍還是會新建對象,
     第3、4種情況則說明像int這樣的基本類型==只是比較值是否相同
     第5種情況則輸出false,則說明==比較的確實是內存地址,Integer對象new出來後存放在堆裏面。
     第6種情況輸出true則說明了自動拆箱機制,即基本數據類型和包裝類對象比較的時候,對象會自動拆箱爲基本數據類型再比較,比較的就是裏面的值而不是地址。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章