基本数据类型对象包装类
按照java面向对象的原则,万事万物都是对象,这也就包括了基本数据类型。
Byte byte
Short short
Integer int
Long long
Boolean Boolean
Float float
Double double
Character char
接下来就以int为例进行讲解:
在java.lang包中Integer类
Integer类在对象中包装了一个基本类型int值。Integer类型的对象包含一个int类型的字段。
具有固定的最大最小值。
基本数据类型包装类的最常见作用
就是用于基本数据类型和字符串类型之间做转换。
基本数据类型转成字符串。
基本数据类型+””;
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34);//将34
字符串转成基本数据类型。
日常当中的应用:我们上网的时候都会在文本框里输入数字。比如年龄24。文本框中的数据类型全是字符串。那么我们需要判断输入的年龄是否大于20岁。这是数学运算。所以我们需要把字符串24转成整数24.再做判断。
在Integer类中有方法
Static int parseInt(String s)把字符串转换成int类型。
其他基本数据类型也是这样转。
两个特殊的:
Static Boolean parseBoolean(String s):将字符串转换成boolean值。
Character没有parsexxxxx()的方法
如果传入的字符串中有其他非数字的字符,例如abccff等,会报数字格式异常。
Java.lang.NumberFormatException.
也就是说必须传入数字格式的字符串。
基本数据包装类封装了很多方法,这些方法很多是静态的,很多是操作数据的方法,方便我们使用。
十进制转成其他进制
ToBinaryString();
toHexString();
toOctalString();
其他进制转成十进制:
ParseInt(String str,radix);
如果超出给定进制范围,也会报数字格式异常 。
基本数据类型包装类的字符串转成基本数据类型,如果不采用那种静态的parsexxxx()的方法,还可以采用先把字符串或者整数封装成相应的对象,再通过对象调用xxxvalue()方法也可以达到目的。
基本数据类型对象包装类新特性。
下面做个小练习:
Integer x = new Integer(“123”);
Integer y = new Integer(123);
System.out.println(x==y);
Sytem.out.println(x.equals(y));
结果
False
True
因为x,y是两个不同的对象。
Integer类复写了父类中的equals()方法,它比较的是数值是否相同。
JDK1.5版本以后出现的新特性。
1.5以前:Integer x = new Integer(4);
1.5以后; Integer x = 4;x是引用数据类型。右边的4是对象,因为类类型变量肯定指向对象。这就是自动装箱。其实这个4 = new Integer(4);,只不过这个动作不用咱们显式做了,JDK隐式帮咱们做了。这就是简化书写。
同时,这个x可以直接进行运算。
X = x+2,//x+2x应该先变成整数再进行运算。进行了自动拆箱。变成了int类型。和2进行加法运算。再将结果自动装箱赋给x。
那它是如何拆箱的呢?
X是个对象,这里做的其实是x.intValue().
需要注意的是如果你要使用1.5版本以后的新特性。,你需要注意x的取值范围,Integer类的对象x会多一个空值:null.会出现空指针异常。做判空操作。
小案例:
Integer m = 128;
Integer n = 128;
Integer a = 127;
Integer b = 127;
M==n false
A==b true
第一个false还是因为m和n是不同的对象。
第二个true是因为a和b指向了同一Integer对象。因为当数值在byte范围内,对于新特性,如果该数值已经存在,则不会再开辟新的空间。
这个新特性,面试可能会问到,开发不常见。一般都equlas().