码迷,mamicode.com
首页 > 编程语言 > 详细

Java包装类

时间:2019-08-05 14:14:46      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:了解   png   包含   因此   包装   com   margin   装箱   mamicode   

包装类的基本概念:

  Java是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到Object[]数组或集合中的操作等等。

  为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

  包装类均位于java.lang包,八种包装类和基本数据类型的对应关系如表8-1所示:

技术图片

  在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写而已。

      在这八个类中,除了Character和Boolean以外,其他的都是“数字型”,“数字型”都是java.lang.Number的子类。Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:intValue()、longValue()、floatValue()、doubleValue(),意味着所有的“数字型”包装类都可以互相转型。如图8-1和图8-2所示。

技术图片

图8-1 Number类的子类

技术图片

图8-2 Number类的抽象方法

包装类的用途:

  1. 作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。

      2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。

/**
 * 测试包装类Integer
 */
public class Test {
    public static void main(String[] args) {
        //基本数据类型转换为包装类
       Integer a1 = Integer.valueOf(20);
       //包装类转换为基本数据类型
        int a2 = a1.intValue();
        //包装类可以和其他继承Number类的子类对象互相转换
        Double d1 = a1.doubleValue();
        Float f1 = a1.floatValue();
        //字符串转换为包装类
        Integer a3 = Integer.valueOf("30");
        //包装类对象转换为字符串
        String s1 = a3.toString();
    }
}

自动装箱和拆箱:

  基本数据类型和包装类对象转换时虚拟机会自动进行拆箱和装箱。

//自动装箱
Integer in1 = 123;  //等价于Integer in1 = Integer.valueOf(123);
//自动拆箱
int in2 = in1;  //等价于 int in2 = in1.intValue();

包装类的缓存问题:

//自动装箱
Integer in1 = 123;  //等价于Integer in1 = Integer.valueOf(123);
Integer in2 = 123;
System.out.println(in1 == in2); //在Integer的源码里面,已经缓存了区间[-128,127]里面的Integer[]对象,在这个区间里面的对象直接返回缓存对象引用,不在区间范围就new一个新的Integer对象

Integer in3 = 1234;
Integer in4 = Integer.valueOf(1234);
System.out.println(in3 == in4);

 

Java包装类

标签:了解   png   包含   因此   包装   com   margin   装箱   mamicode   

原文地址:https://www.cnblogs.com/chiweiming/p/11302322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!