目录
1、包装类:
包装类在java.lang中作为基础类使用,他们的出现是为了解决基本数据类型不能直接参与面向对象开发的问题,让基本类能够以"对象"的形式存在。
2、基本数据类型以及他们的包装类:
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
需要注意的是int和char对应的包装类的写法。
3、装箱:
从基本数据类型到包装类,为装箱。即 int -> Ingeter ;
int a = 123;
Integer i = Integer.valueOf(a);
System.out.println(i);//123
注意:
在byte取值范围[-128,127]内,不会创建新对象。
Integer i1 = Integer.valueOf("123");
Integer i2 = Integer.valueOf("123");
System.out.println(i1==i2);//true
System.out.println(i1.equals(i2));//true
i1 i2指向相同的对象。同一类型的相等数值使用 == 作比较,比较的是地址,返回的是true。包装类重写了equals方法,使用equals()比较时比较的是数值,返回true。
在byte取值范围[-128,127]外,创建了新对象。
Integer i3 = Integer.valueOf("123");
Integer i4 = Integer.valueOf("123");
System.out.println(i3==i4);//false
System.out.println(i3.equals(i4));//true
i3 i4指向不同的对象。此时使用 == 比较地址,返回false。使用equals()依旧比较数值,返回true。
4、拆箱:
从包装类到基本数据类型,为拆箱。即 Ingeter -> int ;
Integer i = Integer.valueOf("28");
int b = i.intValue();
System.out.println(b);//28
5、自动拆装箱
JDK5之后提供了新功能:自动拆装箱。
该特性是编译器认可的,不是虚拟机认可的。当编译器在编译代码时发现有基本类型与包装类相互赋值操作时,会自动添加转换的代码,这样我们在源代码中就不需要编码来完成相互的转换了。
6、parseXXX(String str)方法:
除Character包装类外,所有包装类都有一个静态的方法:parseXXX();
该方法可以将指定的字符串转换为基本类型,前提是字符串正确描述了基本类型可以保存的值,否则会抛出数字格式异常(NumberFoematException)。
int x = Integer.parseInt("123");//123
double y = Double.parseDouble("123");//123.0
对于Boolean包装类:当字符串为"true"时,返回true,且不区分大小写。其余都返回false。