Java包裝類之自動裝箱與拆箱
JDK 5.0之前
基本數據類型<—->包裝類:調用包裝類的構造器(代碼裡有知識點和註意點)
轉換目的:有瞭類的特點,就可以調用類中的方法
public class WrapperTest { // 基本數據類型--->包裝類:調用包裝類的構造器 @Test public void test1() { int num1 = 10; Integer in1 = new Integer(num1); System.out.println(in1.toString());//10 Integer in2 = new Integer("123"); System.out.println(in2.toString());//123 // 報異常:NumberFormatException Integer in3 = new Integer("123abc");//調用Integer必須全是數字 System.out.println(in3.toString()); //有點特殊:因為底層源碼 return ((s != null) && s.equalsIgnoreCase("true")); Boolean b1 = new Boolean(true); Boolean b2 = new Boolean("True");//true System.out.println(b2); Boolean b3 = new Boolean("true123");//flase Order order = new Order(); System.out.println(order.isMale);//false//因為基本數據類型的默認初始化值為:false System.out.println(order.isFamale);//null//此時為引用數據類型(類),默認初始化值:null } } class Order { boolean isMale; Boolean isFamale; }
包裝類—>基本數據類型:調用包裝類的xxxValue()
轉換目的:就可以進行加減乘除的運算
public class WrapperTest { @Test public void test2() { Integer in1 = new Integer(12); int i1 = in1.intValue(); System.out.println(i1 + 1);//13 Float f1 = new Float(12.3); float f2 = f1.floatValue(); System.out.println(f2 + 1);//13.3 } }
JDK5.0之後
自動裝箱:本質是替換之前的調用包裝類的構造器
自動拆箱:本質是替換之前的調用包裝類的xxxValue()
public class WrapperTest { @Test public void test3() { //自動裝箱 int num2 = 10; Integer in1 = num2; boolean b1 = true; Boolean b2 = b1; //自動拆箱 System.out.println(in1.toString()); int num3 = in1; } }
基本數據類型、包裝類—->String類型:調用String重載的valueOf(Xxx xxx)
public class WrapperTest { @Test public void test4() { //方式一:連接運算 int num1 = 10; String str1 = num1 + ""; //方式二:調用String的valueOf(Xxx xxx) float f1 = 12.3f; String str2 = String.valueOf(f1); Double d1 = new Double(12.4); String str3 = String.valueOf(d1); System.out.println(str2);//"12.3" System.out.println(str3);//"12.4" } }
註意點:“+”運算符是最簡單、最快捷,也是使用最多的字符串連接方式。在使用”+”運算符連接字符串和int型(或double型)數據時,“+”將int(或double)型數據自動轉成String類型。
String—>基本數據類型、包裝類:調用包裝類的parseXxx(String s)
public class WrapperTest { @Test public void test5() { String str1 = "123"; int num2 = Integer.parseInt(str1);//若為"123a",則會報NumberFormatException System.out.println(num2 + 1); String str2 = "true"; boolean b1 = Boolean.parseBoolean(str2);//非true,即flase System.out.println(b1); }
註意:轉換時,可能會報NumberFormatException
到此這篇關於Java包裝類之自動裝箱與拆箱的文章就介紹到這瞭,更多相關Java 裝箱 拆箱內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- java Wrapper類基本用法詳解
- java基礎之包裝類的介紹及使用
- 詳談java中int和Integer的區別及自動裝箱和自動拆箱
- 詳解Java中包裝類Integer的使用
- Java基礎詳解之包裝類的裝箱拆箱