分類  >  編程 >

根本數據類型拆裝箱

tags:    時間:2013-12-23 08:48:55
基本數據類型拆裝箱
  • 自動拆箱與裝箱

Jdk5以後提供了自動拆箱(unboxing)與裝箱(autoboxing),但是對拆裝箱的細節進行了部分隱藏,需要注意

  • 基本數據類型對應的包裝類

Java是面向對象的語言,而基本數據類型只是字面量,不是對象。為了解決這個問題java引入了基本數據類型的包裝類

Integer Double Long Short Character Boolean Float Byte

Integer i = 10; //自動裝箱

Double a = i.DoubleValueOf();  //10.0

也可以使用更一般化的java.lang.Number類來自動裝箱。例如:

Number a = 3.4f;

  • 自動拆裝箱的陷阱

Integer i = null;

Int a = I;  //編譯無錯誤  運行時出空指針異常

     Integer a1 = 127;

     Integer a2 = 127;

     System.out.println(a1 == a2); //true

     Integer b1 = 128;

     Integer b2 = 128;

   System.out.println(b1 == b2);//false

 

==是用來比較兩個基本數據類型的值是否相同,同時==也可以判斷兩個對象的引用是否相同(是否是同一對象)。對於-128~1271個位元組)的值會在你自動拆裝箱過程中重用,因此這個範圍內的Integer類型對象是相同的,而超出這個範圍的則不會得到重用,因此對象實不相等的。

 

**  * 基本數據類型的自動拆裝箱  * @author Pursuit.  * @version 2013-11-12  下午9:51:24  */ public class AutoBoxing { 	public static void main(String[] args) { 		Integer i = 10; 		Integer a = new Integer(10); 		Integer b = 10; 		System.out.println(i.doubleValue()); 		System.out.println(a == i); 		System.out.println(i.compareTo(b)); //		Number c = 3.14f; 		//先拆箱后運算 		System.out.println(++i); 		 		/** 		 * 自動拆裝箱中的陷阱 		 */ //		Integer c1 = null; //		int c = c1; //無編譯錯誤 運行時空指針異常 		 		Integer a1 = 127; 		Integer a2 = 127; 		System.out.println(a1 == a2); //true 		Integer b1 = 128; 		Integer b2 = 128; 		System.out.println(b1 == b2);//false 		System.out.println(b1.equals(b2));//true 	} }	 

 

推薦閱讀文章

Bookmark the permalink ,來源:互聯網