Java包装类之自动装箱与拆箱
JDK 5.0之前
基本数据类型<---->包装类:调用包装类的构造器(代码里有知识点和注意点)
转换目的:有了类的特点,就可以调用类中的方法
public class WrapperTest { // 基本数据类型--->包装类:调用包装类的构造器 @Test public void test1() {int num1 = 10; Integer in1 = new Integer(num1); System.out.println(in1.toString()); //10Integer in2 = new Integer("123"); System.out.println(in2.toString()); //123// 报异常:NumberFormatExceptionInteger 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"); //trueSystem.out.println(b2); Boolean b3 = new Boolean("true123"); //flaseOrder order = new Order(); System.out.println(order.isMale); //false//因为基本数据类型的默认初始化值为:falseSystem.out.println(order.isFamale); //null//此时为引用数据类型(类),默认初始化值:null }}class Order { boolean isMale; Boolean isFamale; }
![Java包装类之自动装箱与拆箱](https://img.it610.com/image/info11/adf5f5c3f7934feda764dd8ba102cf0d.jpg)
文章图片
包装类--->基本数据类型:调用包装类的xxxValue()
转换目的:就可以进行加减乘除的运算
public class WrapperTest { @Test public void test2() {Integer in1 = new Integer(12); int i1 = in1.intValue(); System.out.println(i1 + 1); //13Float 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",则会报NumberFormatExceptionSystem.out.println(num2 + 1); String str2 = "true"; boolean b1 = Boolean.parseBoolean(str2); //非true,即flaseSystem.out.println(b1); }
注意:转换时,可能会报NumberFormatException
【Java包装类之自动装箱与拆箱】到此这篇关于Java包装类之自动装箱与拆箱的文章就介绍到这了,更多相关Java 装箱 拆箱内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用
- Java基础-高级特性-枚举实现状态机