基本数据类型的豪华版---包装类
- 基本数据类型
- 包装类
基本数据类型
在我们刚开始学习Java的时候,我们学习的应该就是Java中的八种基本数据类型:
byte short int long float double char boolean
当时我们还说过Java是面向对象编程的语言,一切皆对象,但是受到当时知识的限制,我们还是没有办法把一个数据当成一个对象来操作,当时我就跟兄弟们说了,不要着急,Java中八种基本数据类型都会有其对应的包装类,今天我就来给兄弟们盘一盘包装类!
包装类
首先我们要知道,包装类是八种基本数据类型的升级版,也只有这八种数据类型才有其对应的包装类,我们只要记住int的包装类是Integer以及char的包装类是Character就行,其他的直接是首字母大写!
int a=10;
Integer A=a;(自动装箱/包)隐式的
int b=A;
这里编译器是可以运行的,因为Integer是int的包装类,所以这两者之间才可以相互转化的,在底层我们可以看到的是Java会自动给你调用一个valueOf( )方法,也就是说自动装箱的原理实际上就是调用了这个方法:
Integer A=Integer.valueOf(a);
int b=A.intValue()
看到此情此景,兄弟们心中是否有一点感受?
为什么我们要这个包装类呢?
是不是当我们把基本数据类型给包装成一个类之后,我们势必可以在这个类中写一些成员变量,更可以写一些成员方法,就比如这个Integer.valueOf 我们可以明显感觉到,这一定是一个静态方法,不然不可能可以直接通过类名进行调用:
果不其然!
而且通过一些猜想加实践,我们可以知道的是每一个包装类都有类似的性质,里面都会有valueOf方法,而且用哪个包装类.出来的valueOf最终就会变成哪个类型的.
小题目:
Integer a = 1;
Integer b = 1;
Integer c = 555;
Integer d = 555;
System.out.println(a == b);
System.out.println(c == d);
请问a和b c和d相等吗?
为什么这里一个相等一个不等呢?
知其然,知其所以然!我们在这个程序中,只执行了一个操作:装箱,那我们就去看看装箱的过程中发生了什么呗!
看到这个源码我们就不难理解为什么会有刚才的现象了,如果我们要装箱的这个数字在一个范围之内,那我们里外里返回的都将是数组里面的,也就是现成的东西,但是如果,如果超过了这个限制,那不好意思,我们就要重新new一个对象了,而我们知道,引用类型比较比较的向来都是地址,两个不同的对象地址当然不同啦!!
这就是关于包装类我目前能够分享给大家的知识,希望能够帮助到大家.
百年大道,你我共勉!