Java学习里程-----Java基础_16包装类
一、什么叫包装类
包装类,顾名思义,就是给类包装了一层东西生成的新的类。那么它是包装了什么类呢?
我们之前有说过,数据类型,Java中有默认的八大数据类型,这些数据类型呢无法作为对象来操作,而我们学习的是面向对象编程,没有对象我们怎么来操作这些数据呢,这时候,包装类出现了。
二、有那些包装类
可以说啊,每一种基本数据类型都有相对应的一个包装类,下面我们给出来:
三、包装类和基本数据类型
包装类可以转换成基本数据类型,基本数据类型也可以转换成包装类。
包装类转换成基本数据类型,我们叫装箱操作。相反的,我们叫做拆箱。下面我们来体验一下这个过程。
可以看到,装箱前,装箱后的值是一样的,说明没问题。然后我们体验一下拆箱:
也没有问题啊,妥妥的。
除去这种我们用代码转换的装箱、拆箱之外,Java还可以自动做转换。我们再来体验一下:
是不是,拆箱也是一样的,可以做到自动转换:
这时候我们在分析一下包装类,包装类的出现是可以作为对象来使用的,如何去证明?
这时候我们可以做这样一个操作,我们来定义一个Map集合,算了,List集合吧,让list集合存放int类型的数据,我们看可不可以。
我们会发现报错了,错误大致说的是:语法错误,插入“维度”以完成引用类型。什么意思呢?因为List后面的间括号里面放的是泛型(具体什么是泛型,我们后面来说,先了解即可)。泛型定义,不可以放int啊、boolean这样的基本数据类型,因为这些基本数据类型是指代的具体的值,而泛型里面需要的是一个引用类型(引用类型里面存放的是对象的内存地址)。
所以我们就没有办法放入int类型的数据,但是,有了包装类之后,就可以解决这个问题了。因为包装类就是对象的思想,每一个包装类中存放的都是一个对象。所以我们可以改一下程序:
注意!是java.util下面的啊,别引入错包了。
这时候,我们就可以向List中存放“int”类型的数据了,我们放几个,然后输出:
是不是,然后我们呢用一下我们以后会讲到的类型,我们来看一下,list中的对象的类型是什么。
可以看到啊,都是Integer类型。
四、类型转换
以前我们也说过类型转换,转换有两种,强制类型转换、自动类型转换,但是呢,自动类型转换我们用起来其实没有太大的感觉,我们一般发愁的都是强制类型转换。如果强制类型转换出错了,那么程序就不会继续向下执行了。但是有了包装类之后,我们这些个基本数据类型也可以相互转换了。
直接上案例,我们现在有两个char类型的数据,一个是1,一个是5,我们让它俩相加。我们的目的是想让它俩算出来6的,但程序会怎么做呢?
??? 102 是不是很神奇,我们来说一下为啥是102.
char被称为字符,它的+运算时这样算的,我们在键盘上敲打的每一个字母、字符、数字都可以在一个叫ASCII表中查找到一个数,我给出ASCll表的链接:ascii码。我们可以在上面找到,1 和 5 所对应的数字是
49 和 53,char运算是利用其在ASCII里的对应值进行加减运算,也就是用的49和53来运算的,所以才会输出102.
然后继续我们的课程。这么算是不是不对啊,我们发现超出我们的想象,怎么办呢,包装类进场!
我们现用String.valueOf()方法,将char转换成字符串,然后将字符串转换成int类型。这样就可以进行计算。