目录
1.包装类是什么?
包装类就是各个基本数据类型所一一对应的引用数据类型,就是变成一个对象了.
2.包装类的意义是啥?
java是面向对象的语言,万物皆可对象,一些方法的形参只能使用引用数据类型的数据,如:
public void method(Object obj){
System.out.println(obj);
}
此时,我手中如果有一个 int number = 10;的数据就不能作为形参写入method中,但是如果我们从一开始就把number定义为integer类型的数据,那么method方法则可以直接将其作为参数
public static void main(String[] args) {
Integer number = 5;
Demo04 d = new Demo04();
d.method(number);
}
public void method(Object obj){
System.out.println(obj);
}
而且集合是无法存入基本数据类型的数据的,只能存对象
但是我们可以存入integer类型的数据,如:
控制台结果
3.基本数据类型所对应的包装类
4.一些细节
在实际开发中,-128~127之间的数据用的比较多,如果每次都new对象的话,会造成内存资源的浪费,
所以java底层就把-128~127之间的数据为我们创建好了,如果用到了就不会去创建新的,而是返回已经创建好了的对象
public static void main(String[] args) {
//使用java提前创建好的范围
Integer i1 = Integer.valueOf(127);
Integer i2 = Integer.valueOf(127);
System.out.println(i1 == i2);//true
Integer i3 = Integer.valueOf(128);
Integer i4 = Integer.valueOf(128);
System.out.println(i3 == i4);//false
//不使用Java提供的范围对象,自己创建
Integer i5 = new Integer(127);
Integer i6 = new Integer(127);
System.out.println(i5 == i6);//false
}
5.自动装箱和自动拆箱
自动装箱:把基本数据类型自动的变成其所对应的包装类
自动拆箱:把包装类自动的变成其所对应的基本数据类型
原理:在底层会自动的调用静态方法valueOf()得到一个Integer对象,只不过这写操作java帮我们完成了,不用我们亲自动手操作了
在JDK5出现后(自动装箱,自动拆箱),包装类的计算中,int和integer就可以看做是同一个东西,因为其内部是可以自动转化的
public static void main(String[] args) {
Integer i1 = 10;
int i2 = 20;
Integer i3 = i1 + i2;
System.out.println(i3);//30
}
6.包装类的字符串的转换
基本数据类型转String:
String.valueOf(基本数据值)
String转基本数据类型:
包装类.parseXxx(字符串值)
注意:没有parseChar!
举例:
public static int parseInt(String s)
将字符串类型的整数转变成int类型的整数
int i = Integer.parseInt("100");
System.out.println(i);//100
注意:
在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错!!!