基本数据类型对象包装类

按照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().