基本數據類型對象包裝類、自動裝箱和自動拆箱

1  基本數據類型對象包裝類

八大基本數據類型有:byteintshortlongfloatdoublecharboolean

基本數據類型對象包裝類,就是按照面向對象的方法,講基本數據類型包裝成對象。

這樣,就可以通過調用對象的方法,來對基本數據類型進行操作,

還可以實現基本數據類型和字符串之間的轉換,以及不同進制間的轉換。


基本數據類型         引用數據類型(對象包裝類)

byte                       Byte

short                      Short

int                          Integer  **

long                       Long

boolean                  Boolean

float                       Float

double                   Double

char                      Character  **

 

基本數據類型對象包裝類的最常見作用:

就是用於基本數據類型和字符串類型之間做轉換。

 

1,基本數據類型轉成字符串。

     基本數據類型+""

     基本數據類型.toString(基本數據類型值)

     如:Integer.toString(34); //將整數34變成字符串"34"

 

2,字符串轉成基本數據類型。

     static int parseInt(String str):將字符串參數作爲有符號的十進制整數進行解析。

     xxx a = Xxx.parseXxx(String);

       例:

     int num = Integer.parseInt("123");

     double num = Double.parseDouble("12.34");

     boolean b = Boolean.parseBoolean("true");

     方法二(非靜態)

     Integer的非靜態方法intValue(),使用前要創建Integer對象。

     例: Integer i = new Integer("123");

     int num = i.intValue();

 

3,十進制轉成其他進制。

     toBinaryString();  轉成二進制

     toHexString(); 轉成十六進制

     toOctalString();  轉成八進制

4,其他進制轉成十進制。

     static int parseInt(String str, int radix);

     將字符串參數str解析爲以radix爲基數的有符號整數的十進制形式。

     即把str看作radix進制的數,再轉成十進制。

     parseInt("110",10); //把字符串"110"轉成十進制數。

     parseInt("110",2);  //把字符串"110"看成二進制數,再轉成十進制值爲6,結果爲6

 

代碼示例:

class IntegerDemo{
	public static void main(String[] args){
		method_parseInt();
        method_to();
        method_2();
	}	
	public static void sop(Object obj){
		System.out.println(obj);
	}	
	public static void method_parseInt(){
		int num = Integer.parseInt("123"); //字符串類型轉換成基本數據類型
		sop("num="+(num+4));
	}	
	public static void method_to(){
		sop(Integer.toBinaryString(6)); //十進制轉成二進制。
		sop(Integer.toBinaryString(-6)); //十進制轉成二進制。
	}	
	public static void method_2(){
		int x = Integer.parseInt("110",10); //把十進制的110轉成十進制
		sop("x="+x);
		int y = Integer.parseInt("110",2);  //把二進制的110轉成十進制
		sop("y="+y);
		int z = Integer.parseInt("3c",16);  //把十六進制的3c轉成十進制
		sop("z="+z);
	}
}

2.  基本數據類型對象包裝類 JDK1.5新特性

     JDK1.5 之後出現的新特性

     自動裝箱,自動拆箱。

     Integer  num = 12;   //進行了自動裝箱,將基本數據類型int類型的12,包裝成Integer對象。

     int   count = num+1;   //進行了自動拆箱,將Integer對象num拆箱爲int類型,再與int類型的1相加,結果爲int類型。

     byte範圍內的(-128127),如果該數值的對象已經存在,則不會再開闢新的空間.

 

詳見代碼:

class IntegerDemo2{
	public static void main(String[] args){
		//Integer x = new Integer(4);
		Integer x = 4; //自動裝箱,4是一個對象,相當於 new Integer(4)
		x = x + 2;  //x+2: x進行了自動拆箱,變成了int類型,和2進行加法運算,再將和進行裝箱賦給x。
				    //自動拆箱原理:x.intValue();
		Integer m = 128;
		Integer n = 128;
		sop("m==n:"+(m==n)); //結果爲false,因爲是兩個對象,內存地址值不同	
		Integer a = 127;
		Integer b = 127;
		sop("a==b:"+(a==b)); //結果爲true,因爲a和b指向了同一個Integer對象,
							   //因爲當數值在byte範圍內時,對於新特性,如果該數值的對象已經存在,則不會再開闢新的空間。
							   //byte的範圍:-128~127
	}	
	public static void sop(Object obj){
		System.out.println(obj);
	}	
	public static void method(){
		Integer x = new Integer("123"); //此對象表示字符串參數所指示的int值
		Integer y = new Integer(123);	//此對象表示指定的int值		
		sop("x==y:"+(x==y)); //兩個對象,內存地址不同,false
		sop("x.equals(y):"+x.equals(y)); //兩個對象內容相同,即int值相同,true
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章