JAVA-初步认识-常用对象API(基本数据类型对象包类-JDK1.5自动装箱拆箱)
一.
接下来说一下,integer里面的基本使用说一下,数字在进行操作的时候,我们通常用的都是运算符。数字变成对象以后,用的是什么呢?
DOS结果显示,第一个是false,第二个是true。只要是new,就是建立了堆内存中的不同空间。equals为什么相同呢?因为Integer覆盖了object里面的方法,Integer里面比较的是数值是否相同。"3"本身先被转成10的二进制值,然后再进行封装。
Integer想比较大小,它自己最为清楚。
以前比较数值大小直接通过比较运算符,现在是通过形成对象,调用对象的方法来进行比较。结果显示为0,意味着两个相等,通过数值来判断大小。compareTo的方法结果只有三个值1,0,-1。以前比较abc,就有减大小。现在比较数值就不需要,因为有可能有些数值非常的大。
一个字节有八个比特位,7个比特位就可以把阿斯科码表表示出来。
二. 某些方法的升级
某些方法在1.5版本后,有了一些升级,这个升级出现了一些新特性。Integer本身描述的是一个整数,所以我们希望它能不能直接按照操作整数一样,来操作Integer,
自动将这个4封装成对象了,即使写成Intefer i=4,在内存中还是表现成new Integer(4);
不光是赋值操作,整数怎么用,它就怎么用。
升级之后操作很简单,和操作变量一样方便,但是它是对象。
i=i+6,i要和6相加,那么对象i要先变成整数。i要变成基本数据类型,把一个Integer对象变成基本数据类型该怎么做?
i对象先进行自动拆箱,变成了int类型和6进行运算,接着将得到的和进行装箱赋值给i。
那怎么进行的拆箱?使用的i.intValue();对象调用一个方法,使其变成一个整数,然后才能进行运算。
在使用1.5版本以后的新特性的话,必须有一点要注意, i除了取整数值以外,它还多了一个值,多了一个null。如果是int类型的变量,只能是1,2,3......。如果出现了Integer i=null的话,在运行的时候会出现nullpointException,在null的情况下,就无法调用方法得到整数。新的特性健壮性会差一些,要进行判断。不为空的时候,才能进行运算,为空要小心,会抛出异常。一抛空异常,程序就会停掉,因为是runtime异常。
i是引用数据类型,因此可以是null,自动拆箱装箱虽然简化了操作,但是有弊端需要做健壮性的判断操作。
接下来说一下,自动拆箱装箱比较特殊的地方,开发不多见,但是面试可能会有。
旧版本和1.5版本之后的两种写法,结果是false,true,true,true。
换成128之后,结果就是false和true。
jdk1.5版本之后,自动装箱,如果装箱的是一个字节,那么该数据就会被共享不会重新开辟空间。