Java包装类之自动装箱与拆箱

网友投稿 464 2022-12-08

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

IntegeSOreUsjzBr in3 = new Integer("123abc");//调用Integer必须全是数字

System.out.println(in3.toString());

//有点特殊:因为底层源SOreUsjzB码 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)

SOreUsjzBpublic 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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 数据流之Broadcast State
下一篇:Java并发编程之代码实现两玩家交换装备
相关文章

 发表评论

暂时没有评论,来抢沙发吧~