Java 装箱 拆箱
人气:0JDK 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
加载全部内容